下面的代碼是在MVCC下編譯的,但不是g ++,我不知道爲什麼。使用模板參數的typedef不能用g ++工作
template <typename T>
class A
{
public:
template <typename C>
class B
{
public:
C* cptr;
};
typedef typename A<T>::B<T> Ttype;
};
int main(int argc,char** argv)
{
A<int>::Ttype d;
d.cptr = 0;
}
與G ++,你
error: 'typename A<T>::B name template<class T> template<class C> class A<T>::B', which is not a type
我與編譯-std = C++ 11
鏗鏘集編譯它,一定是GCC中的一個bug – uk4321
哪個版本的gcc? 'gcc --version' – Till
只需使用'typedef B Ttype;'解決問題。 –