В С++ 14 void
является литеральным типом
Тип - это буквальный тип, если он:
- void; или
- скалярный тип; или
- ссылочный тип; или
- массив литералов; или
- тип класса (раздел 9), который обладает всеми следующими свойствами: он имеет тривиальный деструктор,
- это совокупный тип (8.5.1) или имеет хотя бы один constexpr шаблон конструктора или конструктора, который не является копией или перемещением конструктор и
- все его нестатические элементы данных и базовые классы имеют нелетучие литералы.
В С++ 11 void
не является литеральным типом
Тип - это буквальный тип, если он:
- скалярный тип; или
- ссылочный тип, относящийся к типу литерала; или
- массив литералов; или
- тип класса (раздел 9), который обладает всеми следующими свойствами: он имеет тривиальный деструктор,
- каждый вызов конструктора и полное выражение в логические или несимметричные инициализаторы для нестатических элементов данных (если они есть) являются постоянное выражение (5.19),
- это совокупный тип (8.5.1) или имеет хотя бы один constexpr шаблон конструктора или конструктора, который не является копией или перемещением конструктор и
- все его нестатические элементы данных и базовые классы имеют буквальный типы.
Итак, почему void
литеральный тип? Какие преимущества он предлагает?