アプリケーションの開発中に、次の問題が発生しました。std::list<string>
特定の関数ポインタが null の場合は空を返し、それ以外の場合はその関数の結果を返したいと考えていました。これは私のコードの簡略版です:
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
ですか? それには何か特別な理由がありますか?