// PR c++/96673 | |
// { dg-do compile { target c++11 } } | |
template <class T> | |
class A {}; | |
template <class T> | |
class B; | |
template <class T> | |
class C { | |
private: | |
friend class B<T>; | |
explicit C(A<T>&) {}; | |
}; | |
template <class T> | |
class B { | |
public: | |
B() = default; | |
//B() {}; // << This implementation of the constructor makes it work | |
A<T> a = {}; | |
C<T> c = C<T>{a}; | |
}; | |
int main() { | |
auto b = B<int>{}; | |
auto &c = b.c; | |
} |