関数テンプレートを検討します。
template<typename t> void printme(T&& t) { for (auto i : t) std::cout <p>この関数は、begin を持つ型の 1 つのパラメーターを期待します。 () と end() function.</p> <p><strong>質問:</strong></p> <p>次の呼び出しはなぜ違法ですか?</p> <pre class="brush:php;toolbar:false">printme({'a', 'b', 'c'});
答え:
printme({'a', 'b', 'c'}) の呼び出しは不正です。テンプレート引数 T は推論できません。テンプレート引数を明示的に指定しないと、begin() 関数と end() 関数を使用すると任意の型になる可能性があるため、コンパイラはパラメーターの型を決定できません。この問題は、次の場合には発生しません:
これの例外は、auto の控除です。 std::initializer_list
以上がC テンプレートの型推定において `printme({\'a\', \'b\', \'c\'});` が違法なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。