template<class T>
struct identity
{
typedef T type;
};

struct A : identity<int>
{
type value; //これはOK?
};

typedef base::type type;とtypedefし直してるのをよく見ますが、typedefって継承されますか?
VC++、gccでコンパイル通るようですがC++としてはどうなんでしょうか。