猿问

以下问题是关于C++ constexpr?求大家帮忙看看!

int main() {
const auto staff_size = 27;
constexpr auto* p1 = &staff_size;
return 0;
}

运行结果错误如下?原因?
error: ‘& staff_size’ is not a constant expression constexpr auto* p1 = &staff_size;

肥皂起泡泡
浏览 218回答 2
2回答

沧海一幻觉

因为staff_size是个局部栈变量,它的地址要在运行时才能得到,而constexpr auto* p1要求对p1赋值的地址是个能在编译期就能确定的常量,所以出错。可以把staff_size定义为静态变量或者全局变量,这样编译期就可确定其地址了:int main() {static const auto staff_size = 27; //static静态的constexpr auto* p1 = &staff_size;return 0;}

饮歌长啸

constexpr 是要在"编译"的时候能求出值的表达式。&staff_size 没法在编译时求出地址值吧...
随时随地看视频慕课网APP
我要回答