namespace aaa { template class A { public: A() { } } ; } namespace bbb { template class A_proxy : public B { public: // using aaa::A; // template class aaa::A; typedef B the_a; }; } namespace bbb { template class A : public A_proxy< aaa::A >::the_a { public: A() { } } ; } int main() { using namespace bbb; A a; }