following code не компилируется с GCC:не может использовать единообразного инициализации в списке инициализации конструктора с Try/уловом
struct test {
int x;
test() try : x{123} {
}
catch (...) {
}
};
int main() {}
Ошибки:
prog.cpp:3:25: error: expected unqualified-id before ‘{’ token
test() try : x{123} {
^
prog.cpp:5:5: error: expected unqualified-id before ‘catch’
catch (...) {
^
prog.cpp: In constructor ‘test::test()’:
prog.cpp:3:23: error: expected ‘{’ at end of input
test() try : x{123} {
^
prog.cpp:3:23: error: expected ‘catch’ at end of input
prog.cpp:3:23: error: expected ‘(’ at end of input
prog.cpp:3:23: error: expected type-specifier at end of input
prog.cpp:3:23: error: expected ‘)’ at end of input
prog.cpp:3:23: error: expected ‘{’ at end of input
Изменение x{123}
к x(123)
помогает. Предполагается ли это (не) работать таким образом?
Clang [скомпилирует его] (http://coliru.stacked-crooked.com/a/0e8921393e3a52f1) без ошибок – Praetorian
Все, что связано с фигурными скобками и C++ 11, очень вероятно, не полностью в течение некоторого времени выполняли угловые случаи в компиляторах ... –
@KerrekSB Я думал, что это ошибка, но в книге Страустрапа он использует единую инициализацию в конструкторах, за исключением случаев, когда есть попытка/уловка, так что меня это озадачило. – catscradle