私は、次のしているテンプレート関数:std :: initializer_list <int>({1,2,3})と{1,2,3}の違いは何ですか?
template<typename T> void foo2(T t) {}
私は私が使用してそれを呼び出すことはできませんことを知っている:初期化子リストは、テンプレート引数のための非推定されるコンテキストがある
foo2({1,2,3});
ので。私が使用する必要があります:
foo2<std::initializer_list<int>>({1,2,3});
を私はまた、使用することができます。
私は違いが何であるかを思ってしまうfoo2(std::initializer_list<int>({1,2,3}));
:{1,2,3}
とstd::initializer_list<int>({1,2,3})
は?
'のstd :: initializer_list({1,2,3})' 'タイプSTDの表現である:: initializer_list '。 '{1,2,3}'は式ではありません。ブレースされたリストは、式が出現できる場所だけでなく、言語定義が明示的に許可するコンテキストでも発生します。 –
@ M.M回答が0件の質問に対する回答が分かっている場合は、回答に答えていることが分かります。 (͡°ʖ̯͡°) – luk32
@ luk32答えを書くために自由に感じ...私は完全な答えは、私が –