【发布时间】:2018-07-15 00:30:27
【问题描述】:
struct X
{
X() { std::cout << "default ctor" << std::endl; }
};
int main()
{
X({});
}
打印出来
default ctor
这是有道理的,因为空括号值初始化对象(我认为)。 然而,
struct X
{
X() { std::cout << "default ctor" << std::endl; }
X(std::initializer_list<int>) { std::cout << "initializer list" << std::endl; }
};
int main()
{
X({});
}
为此,我得到了
initializer list
我不觉得这种行为很奇怪,但我并不完全相信。这是什么规则?
此行为是否写入标准的某些部分?
【问题讨论】:
标签: c++ c++11 language-lawyer initializer-list