jin*_*575 11 c++ templates typedef
如果我有一个模板类:
template<typename Layout>
class LayoutHandler : Handler {
};
Run Code Online (Sandbox Code Playgroud)
我想将参数Layout公开给该类的用户.然后:
template<typename Layout>
class LayoutHandler : Handler {
public:
typedef Layout Layout; // using the same name
};
Run Code Online (Sandbox Code Playgroud)
VS2012可以编译此代码,并给出预期的结果.(我使用std :: is_same来检查它.)在标准C++ 03或C++ 11中是否允许这样做?
C++11 中不允许这样做。
Atypedef是一个声明。(参见第 7.1.3 节)
参数template不能在其作用域(包括嵌套作用域)内重新声明。(参见第 14.6.1.6 节)