【发布时间】:2013-11-30 17:42:52
【问题描述】:
我有这个结构,
struct
AAA
{
AAA() : bbb(2)
{
// ccc ???
}
int bbb = 1;
int ccc = bbb;
};
AFAIK,如果有初始化列表:bbb(2),则表达式bbb = 1 将被忽略。然后,我不清楚ccc 最终会变成什么。
initialization-list 或 brace-or-equal initializer 中的哪一个会首先被评估?他们之间的规则是什么?
【问题讨论】:
-
你为什么不检查一下?
-
@klm123 我认为具体的实现不能保证实际规则。
-
@KateGregory Hm,知道你我敢暗示你错了,但如何结合§12.6.2.9? :)
-
@JoachimIsaksson 在 VS2013 的预发布版本中,我收到了两种操作的警告。但是,我刚刚检查了发布版本,看起来只有 :() 发生了,而非静态成员 init 没有发生。无法替代测试:-)
标签: c++ c++11 initialization operator-precedence