У меня есть эта очень простая функция, которая не будет компилироваться.constexpr void function reject
constexpr void func()
{
}
Ошибка я получаю:
error: invalid return type 'void
' ofconstexpr
function 'constexpr void func()
'constexpr void func()
В C++ 14, void
является буквальным типа [§3.9/10]:
тип является литеральный тип если:
- void; или
- скалярный тип; или
- ссылочный тип; или
- массив литерального типа; или
- типа класса (пункт 9), который имеет все из следующих свойств:
- имеет тривиальный деструктор,
- это совокупность типа (8.5.1) или имеет, по меньшей мере, один
constexpr
конструктор или конструктор, который не является конструктором копирования или перемещения, и- все его нестатические элементы данных и базовые классы являются нелетучими литералами.
Может кто-нибудь объяснить, почему это является недействительным?
возможно дубликат (HTTP [Пустота как буквальный типа?]: // StackOverflow .com/questions/27486581/void-as-a-literal-type) –
Ссылаясь на рабочий проект post-C++ 14, не очень полезно для доказательства фактов о C++ 14. –