New issue 965 by tberghammer: iwyu removes include when declaration is only used in uninstantiated template function
https://github.com/include-what-you-use/include-what-you-use/issues/965
```
// a.h
struct Foo {};
// b.h
#include "a.h"
template <typename T> int size() { return sizeof(T); }
template <int X> int foo() { return X + size<Foo>(); }
// b.cc
#include "b.h"
// c.cc
#include "b.h"
int bar() { return foo<5>(); }
```
```
/include-what-you-use b.cc
b.h should add these lines:
struct Foo;
b.h should remove these lines:
- #include "a.h" // lines 1-1
The full include-list for b.h:
struct Foo;
---
(b.cc has correct #includes/fwd-decls)
```
IWYU decides that we don't need the full definition of Foo in b.h because we never instantiated size<Foo>() but it means that when trying to compile c.cc it will fail to compile as we won't have the full definition of Foo.
P.S.: size<T>() is a simplification on std::make_unique<T> what fails the same way as the one above