不出所料,我可以毫无问题地编译下面的示例
// first_sample.cpp
struct sample_struct
{
constexpr int
sample_method()
{ return 5; }
};
int main()
{
sample_struct sample_object;
constexpr int sample_variable = sample_object.sample_method();
return 0;
}
但我无法编译以下示例的原因
'this' 不是一个常量表达式
// second_sample.cpp
struct sample_struct
{
constexpr int
sample_method_first()
{ return 5; }
void
sample_method_second()
{ constexpr int sample_variable = sample_method_first();
/* Do something with sample_variable */ }
};
int main()
{ return 0; }
我已经知道如何解决这个“问题”,所以我不是在寻求解决方案。我要求一个合理的解释,为什么允许我从非 constexpr 对象调用 constexpr 方法,而不允许我在另一个方法中调用相同的 constexpr 方法(从非 constexpr 'this')。