【发布时间】:2018-05-03 07:16:19
【问题描述】:
literal class compile error with constexpr constructor and function (differ vc, g++) 中接受的答案表明,在 C++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
}
对我来说,a() 上的 constexpr 似乎没用。
constexpr 在非const 成员函数上有具体用途吗?
【问题讨论】: