有人能告诉我这背后的理论吗?
为什么最后一次调用不编译?
test.cc:在函数'int main()'中:test.cc:15:12:错误:'int'[-fpermissive] test.cc:15:12的初始化器周围的大括号太多:
错误:从 '' 到 'int' [-fpermissive] test.cc:9:6 的无效转换:错误:初始化 'void f(std::initializer_list)' [-fpermissive] test.cc:15:12 的参数 1 :
错误:在需要整数的地方使用了聚合值
我认为c ++ 11或g ++ 4.7在这方面被打破了。谢谢!
#include <initializer_list>
class A {
public:
A(const std::initializer_list<int>) {}
};
void f(const std::initializer_list<int>) {}
int main() {
A({1}); // Compile OK
f({1}); // Compile OK
A({{{1}}}); // Compile OK
//f({{{1}}}); // Compile Error.
}