IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

テンプレートのインスタンス化のタイミングが分からない><

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 は見えない気がするのですが><
なんで、コンパイル通るんだろう><