Неоднозначность вывода аргументов шаблона класса ⇐ C++
-
Anonymous
Неоднозначность вывода аргументов шаблона класса
Соответствует ли следующий пример кода стандарту C++20 или его следует отклонить из-за неоднозначного вывода?
шаблон структура s { s(int) требует true {} с (целое) {} }; static_assert(not noException(s{int{}})); // лязг нет, gcc ок, msvc ок Живой пример
Сообщение об ошибке от Clang:
:6:28: ошибка: неоднозначный вывод для аргументов шаблона 's' 6 | static_assert(not noException(s{int{}})); | ^ :3:5: примечание: функция-кандидат [с $0 = ] 3 | s(int) требует true {} | ^ :4:5: примечание: функция-кандидат [с $0 = ] 4 | с (целое) {} | ^
Соответствует ли следующий пример кода стандарту C++20 или его следует отклонить из-за неоднозначного вывода?
шаблон структура s { s(int) требует true {} с (целое) {} }; static_assert(not noException(s{int{}})); // лязг нет, gcc ок, msvc ок Живой пример
Сообщение об ошибке от Clang:
:6:28: ошибка: неоднозначный вывод для аргументов шаблона 's' 6 | static_assert(not noException(s{int{}})); | ^ :3:5: примечание: функция-кандидат [с $0 = ] 3 | s(int) требует true {} | ^ :4:5: примечание: функция-кандидат [с $0 = ] 4 | с (целое) {} | ^
Мобильная версия