nil*_*ils 1 c++ templates constant-expression
我正在尝试使用自定义类的瞬间作为模板参数.
class X {
public:
X() {};
};
template <class Foo, Foo foo>
struct Bar {
};
const X x;
Bar<X, x> foo;
Run Code Online (Sandbox Code Playgroud)
编译器声明x不能出现在常量表达式中.为什么?在编译时构造该对象有一切.
你不能这样做.标准14.1说:
4非类型模板参数应具有以下之一(可选cv限定)类型:
- 整数或枚举类型,
- 指向对象或指向函数的指针,
- 对象的引用或对函数的引用,
- 指向成员的指针.
5 [注意:管理模板参数形式的规则 (14.3)明确地禁止或隐式地禁止其他类型.-end note]确定模板参数的类型时,将忽略template-parameter上的顶级cv限定符.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |