【发布时间】:2015-02-12 13:02:34
【问题描述】:
我有以下琐碎的结构
struct crazy
{
const int i = 10;
};
这显然是不可复制的。确实,如果我有两个该类型的对象,请说 object1 和 object2,并尝试类似的语句
object1 = object2;
我处理的两个编译器,即 clang 3.4.2 和 gcc 4.8.3(嗯,它们可能已经过时了......),抱怨并以合理和拒绝代码 类似的诊断。
但是,为什么在这种情况下,gcc 在初始化时也会检测到错误 常量成员我?无论我将“const”更改为“constexpr”,都会检测到此类错误。
【问题讨论】:
-
它们并没有严重过时;根据维基百科,the current stable version of GCC is 4.9.2 和 the current stable version of clang is 3.5。
-
你在 gcc 中使用 -std=c++11 标志吗?
-
@NathanOliver:当然;我做到了。
-
它是可复制的,但不可分配的。您正确地证明了这一点。
-
你提到的第三个错误是
error: non-static const member 'const int crazy::i', can't use default assignment operator吗?只是g++附带了一些额外的输出,这和前两个抱怨的意思是一样的。