我在某处读到?:C 中的运算符在C++中略有不同,有些源代码在两种语言中都有不同的作用.不幸的是,我找不到任何地方的文字.有谁知道这有什么区别?
在开发应用程序时,我遇到了以下问题.我想std::list<string>在给定的函数指针为null时返回空,否则返回该函数的结果.这是我的代码的简化版本:
typedef std::list<std::string> (*ParamGenerator)();
std::list<std::string> foo() {
/* ... */
ParamGenerator generator = ...;
if(generator)
return generator();
else
return {};
}
Run Code Online (Sandbox Code Playgroud)
但是,我通常喜欢?:在这些情况下使用ternary()运算符,所以我尝试这样使用它(像往常一样):
return generator ? generator() : {};
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误:
somefile.cpp:143:46: error: expected primary-expression before ‘{’ token
somefile.cpp:143:46: error: expected ‘;’ before ‘{’ token
Run Code Online (Sandbox Code Playgroud)
这是否意味着我不能使用三元运算符来返回使用其构造函数创建的对象initializer_list?这有什么特别的原因吗?