Форум » C/C++ » И еще один баг компилятора gcc нв этот раз относительно оператора new. » Ответить

И еще один баг компилятора gcc нв этот раз относительно оператора new.

Сыроежка: Следующая программа [pre2] #include <iostream> int main() { const size_t N1 = 2; const size_t N2 = 3; int ( **p )[N1] = new ( int ( *[N2] )[N1] ); }[/pre2] не компилируется компилятором C++ gcc HEAD 10.0.0 20190. Компилятор выдает следующее сообщение об ошибке [pre2] prog.cc: In lambda function: prog.cc:8:40: error: expected '{' before ')' token 8 | int ( **p )[N1] = new ( int ( *[N2] )[N1] ); | ^ prog.cc: In function 'int main()': prog.cc:8:34: error: no match for 'operator*' (operand type is 'main()::<lambda()>') 8 | int ( **p )[N1] = new ( int ( *[N2] )[N1] ); prog.cc:8:47: error: expected type-specifier before ';' token 8 | int ( **p )[N1] = new ( int ( *[N2] )[N1] ); | ^[/pre2] Однако если заменить именованную константу N2 на ее значение 3 в вызове оператора new, [pre2] int ( **p )[N1] = new ( int ( *[3] )[N1] );[/pre2] то программа компилируется С другой стороны, исходная программа успешно компилируется компилятором clang HEAD 10.0.0

Ответов - 0



полная версия страницы