相关疑难解决方法(0)

typedef改变了意义

当我编译以下代码片段时 g++

template<class T>
class A
{};

template<class T>
class B
{
    public:
        typedef A<T> A;
};
Run Code Online (Sandbox Code Playgroud)

编译告诉我

error: declaration of ‘typedef class A<T> B<T>::A’
error: changes meaning of ‘A’ from ‘class A<T>’
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我改变typedef

typedef ::A<T> A;
Run Code Online (Sandbox Code Playgroud)

一切都很好g++.Clang ++ 3.1并不关心任何一种方式.

为什么会这样?并且是第二个行为标准?

c++ typedef

18
推荐指数
1
解决办法
5018
查看次数

标签 统计

c++ ×1

typedef ×1