んーー、普通に先行宣言するなら template<class T> class BBase; typedef BBase<int> B; class A { ... }; だけど、そういうこと言ってるんじゃなくて、 class Bというのが別にあって、 それがtypedefした名前とぶつかってるって話だよね。
例えば、struct statなんてのは、関数のstat()と名前がかぶっているんだけど 直前に"struct"を付ける事で回避できる(同じスコープで同時に使用できる)から class Bに限っては、直前に"class"をつければ使えるかもしれないね。 試してないけど。
>>920 template< typename Function, class T > class dynamic_method { Function fun; T * obj; public: typedef typename function_traits < typename remove_pointer<Function>::type >::result_type result_type;
dynamic_method( Function fun, T * obj ) : fun( fun ), obj( obj ) {}