In C++, you can declare many things as constexpr: variables, functions (including member functions and operators), constructors, and since C++1z, also if statements and lambda expressions. However, declaring a destructor constexpr results in an error:
struct X {
constexpr ~X() = default; // error: a destructor cannot be 'constexpr'
};
My questions:
- Why can't a destructor be marked
constexpr? - If I do not provide a destructor, is the implicitly generated destructor
constexpr? - If I declare a defaulted destructor (
~X() = default;), is it automaticallyconstexpr?