friend宣言の仕方が分からない。
VC、GCCの両者が受け付けるfriend宣言の仕方が分からない(T_T)
template <class S, class T, template <class> class U> class baz { friend class U<S>::template bar<T>; // <== GCCはこれを受け付けてくれない。 template <class> friend class U<S>::bar; // こうするとVCが受け付けてくれない。 }; template <class S> struct foo { template <class T> class bar{}; }; int main() { baz<int, int,foo> a; return 0; }
面倒くさくなったので、すべてpublicにしてやる。