1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
template <int I> struct B { }; template <class T> B<T::I> f(); class A { static const int I = 42; template <class T> friend B<T::I> f(); }; int main() { f<A>(); }