在开发应用程序时,我遇到了以下问题。当给定的函数指针为空时,我想返回一个空std::list<string>
值,否则返回该函数的结果。这是我的代码的简化版本:
typedef std::list<std::string> (*ParamGenerator)();
std::list<std::string> foo() {
/* ... */
ParamGenerator generator = ...;
if(generator)
return generator();
else
return {};
}
但是,我通常喜欢?:
在这些情况下使用三元 ( ) 运算符,所以我尝试以这种方式使用它(像往常一样):
return generator ? generator() : {};
但是得到了这个错误:
somefile.cpp:143:46: error: expected primary-expression before ‘{’ token
somefile.cpp:143:46: error: expected ‘;’ before ‘{’ token
这是否意味着我不能使用三元运算符来返回使用它们的构造函数创建的对象initializer_list
?有什么特别的原因吗?