Принятый ответ в литеральной ошибке компиляции класса с конструктором и функцией constexpr (отличается vc, g++) показывает, что в С++ 14 существует разница в том, как constexpr int A::a()
и constexpr A::a() const
. т.е. constexpr
в функции-члене не означает, что функция не изменяет объект, на котором он действует.
Данный пример:
struct A {
constexpr A() {}
constexpr int a() {return 12; }
constexpr int b() const {return 12; }
};
int main()
{
constexpr A a;
// DOES NOT COMPILE as a() is not const
// constexpr int j = a.a();
const int k = a.b(); // Fine since b() is const
}
Мне constexpr
на a()
кажется бесполезным. Существует ли конкретное использование для constexpr
для constexpr
[const11] non- const
?