namespace ns { struct B {}; } template <typename T> struct A { void f0(T b) { f(b); } }; int main() { A<ns::B> a; a.f0(ns::B()); // ここで A::f0 のインスタンス化が必要になって return 0; } // この時点で A::f0 がインスタンス化される namespace ns { void f(B b) {} }
なので、 A::f0 インスタンス化時点で、 ns::f は見えない気がするのですが><
なんで、コンパイル通るんだろう><