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

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