在c++模板类中,可以使用相同的名称定义模板参数吗?
In a C++ template class, can I typedef the template parameter using the same name?
如果我有一个模板类:
template<typename Layout>
class LayoutHandler : Handler {
};
,我想向类的用户公开参数Layout。然后:
template<typename Layout>
class LayoutHandler : Handler {
public:
typedef Layout Layout; // using the same name
};
VS2012可以编译此代码,并给出预期的结果。(我使用std::is_same来检查。)这在标准c++ 03或c++ 11中是允许的吗?
在c++ 11中不允许。
一个typedef
是一个声明。(见7.1.3节)
不能在其作用域中(包括嵌套作用域)重新声明template
参数。(见14.6.1.6节)
c++ 11标准草案n3242
不,直到C+11你才可以使用它,它会给你一个错误。
LayoutHandler::Layout的声明错误:阴影模板parm ' class Layout '
相关文章:
- 部分定义/别名模板模板参数
- 有没有办法使用 googletest 创建自定义参数生成器?
- 使用自定义参数的过载删除操作员
- C++ 默认参数的重新定义:参数 1 (矢量 2D)
- Cython:具有自定义参数类型的STD ::功能回调
- 让我们C++推断定义参数的类/命名空间的位置
- 将自定义参数传递到Qt/C++中的插槽
- 定义参数包扩展的"pattern",尤其是在函数调用中
- 使用自定义参数进行 QAction
- 具有未定义参数的私有副本构造函数
- Qt-具有自定义参数的可重用绘制函数
- 类型定义参数的重载
- 如何调用定义参数为空的函数
- 如何正确使用作为其他定义参数的定义?C++
- 框架的用户定义参数应该在哪里
- 带有自定义参数的Sendmessage /postmessage
- c++定义参数重载
- Boost c++ Phoenix用户定义参数的下标操作符[]错误
- 是否可以在预处理器中定义参数化列表?
- c++中可变的用户定义参数列表