В С++ вы можете объявить много вещей как constexpr
: переменные, функции (включая функции-члены и операторы), конструкторы, а так как С++ 1z, также if
statements и лямбда-выражения. Однако объявление destructor constexpr
приводит к ошибке:
struct X {
constexpr ~X() = default; // error: a destructor cannot be 'constexpr'
};
Мои вопросы:
- Почему деструктор не может быть помечен
constexpr
? - Если я не предоставляю деструктор, это неявно сгенерированный деструктор
constexpr
? - Если я объявляю деструктор по умолчанию (
~X() = default;
), автоматически ли онconstexpr
?