MSVC принимает лямбду с удаленным параметризованным вектором, а GCC и Clang отклоняют.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 MSVC принимает лямбду с удаленным параметризованным вектором, а GCC и Clang отклоняют.

Сообщение Anonymous »

Я написал следующую программу, которая принимается MSVC, но отклоняется как GCC, так и CLANG. Каково стандартное поведение?
Демо-версия

Код: Выделить всё

struct C
{
C(int) = delete;
C(){};
};

decltype([b = C(3)](){ return 4;}()) var; //msvc OK but gcc and clang rejects

int main()
{

}
GCC говорит:

Код: Выделить всё

:13:18: error: use of deleted function 'C::C(int)'
13 | decltype([b = C(3)](){ return 4;}()) var ; //msvc OK but gcc and clang rejects
|                  ^
:4:3: note: declared here
4 |   C(int) = delete;
|   ^
:13:18: note: use '-fdiagnostics-all-candidates' to display considered candidates
13 | decltype([b = C(3)](){ return 4;}()) var ; //msvc OK but gcc and clang rejects
|                  ^
Примечание:

Код: Выделить всё

decltype([C(3)](){ return 4;}()) var2;
принимается всеми компиляторами, но decltype((){ return 4;}()) var2; принимается только MSVC, но отклоняется GCC и Clang.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-rejects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»