slycelote / caide-cpp-inliner

Transform a C++ program consisting of multiple source files and headers into a single self-contained source file without any external dependencies (except for standard system headers). Unused code is not included in the resulting file.
Other
32 stars 12 forks source link

Template friend declaration gets removed #11

Closed Predelnik closed 6 years ago

Predelnik commented 7 years ago

Example:

template <typename T>
class C;
template <typename T>
class D
{
  static void f ();
  template <typename>
  friend class C;
};
template <typename T>
class C
{
public:
  static void f ()
  {
    D<T>::f ();
  }
};
int main ()
{
  C<int>::f ();
}

Everything else is preserved but

template <typename>
friend class C;

gets removed which makes D<T> inaccessible from C<T>