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