读书人

constexpr函数能否根据条件返回不同常

发布时间: 2013-10-12 11:54:04 作者: rapoo

constexpr函数可否根据条件返回不同常量
最近在学c++primer。新标准中说constexpr函数会向内联一样直接替换成指定的值。但是如果如下函数会怎样
constexpr string f(){
string sa;
int a = getSystemVar("");
if(a==1)sa= "aaa";
else if(b==2)sa= "bb";
else sa="c";
return sa;
} constexpr
[解决办法]
gcc新版是不是支持c++11?可以试试
[解决办法]
if语句可以用条件表达式?:来代替
constexpr函数内调用的函数必须也是constexpr
如果getSystemVar也是constexpr,改成

constexpr string f(){
return getSystemVar("")==1 ? "aaa" : (getSystemVar("")==2 ? "bb" : "c");
}
就可以了
[解决办法]
返回值必须是 literal type,std::string 不行。
另外 getSystemVar 也必须是 constexpr 的。

读书人网 >C++

热点推荐