Может ли кто-нибудь сказать мне теорию этого?Конструктор и initializer_list
Почему последний звонок не компилируется?
test.cc: In function ‘int main()’: test.cc:15:12: error: too many braces around initializer for ‘int’ [-fpermissive] test.cc:15:12:
error: invalid conversion from ‘’ to ‘int’ [-fpermissive] test.cc:9:6: error: initializing argument 1 of ‘void f(std::initializer_list)’ [-fpermissive] test.cc:15:12:
error: aggregate value used where an integer was expected
Я думаю, что на этом сломается либо 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.
}
Спасибо. Я говорю об заголовке initializer_list stardard в C++ 11. – yufanyufan
Интересно. В обоих случаях Clang просто предупреждает о дополнительных фигурных скобках. – soon