編集:これはリンクされた質問(これも私のものです)と重複しません。戻り値の型はすべて
std::vector
です。私は 返信したくないinitializer-list
を返します。私はinitializer-list
によって返さstd::vector
を埋めたい直接std :: functionのベクタの代わりにイニシャライザリストを返します。
は、私たちは、これらの4例を見てみましょう:
1)
//Acceptable
std::vector<int> foo(){
return std::vector<int>{1};
}
2)
//Acceptable
std::vector<int> foo(){
return {1};
}
3)
//Acceptable
std::function<std::vector<int>()> foo=[](){
return std::vector<int>{1};
};
4)
//NOT Acceptable
std::function<std::vector<int>()> foo=[](){
return {1};
};
2が許容可能であるので、4が受け入れられないのはなぜ?彼らの間には何が違うのですか?また、これは許容可能であることが最も奇妙なことは:
//Acceptable
auto bar=[]()->std::vector<int>{
return {1};
};
std::function
とinitializer-list
の何が問題になっているのですか?
[なぜ私はラムダからイニシャライザリストを返すことができません](http://stackoverflow.com/questions/35361408/whyi-i-can-not-return-initializer-list-from-lambda) –
の可能な複製私はこれをMjölnir:リンクされた答えはあなたの目でこれにどのように答えていないのですか? –
それは異なっています。 Initializerリストを返すことについての質問。すべての場合の戻り値の型はベクトルです。 –