0

私は書くmake_tuple<int,bool>(1,true)か書くことができmake_tuple(1,true)、コンパイラはその型を推測します。この機能は、私が書いたコードで利用できますか、それともアクセスできないコンパイラに組み込まれていますか?

4

4 に答える 4

1

テンプレート引数推定 (これの適切な名前) は、すべての関数テンプレートの標準によって義務付けられています。従うべきプロセスは、C++11 のセクション 14.8.2 で説明されています。

于 2012-07-01T16:42:20.007 に答える
1

次に例を示します。

template <typename... Ts>
tuple<Ts...> my_make_tuple(Ts... ts)
{
    return tuple<Ts...>(ts...);
}

注: これは、完全な転送やその他のトリックを使用していません。これは、引数推定を行う独自の関数を作成する方法の単なる例です。

于 2012-07-01T18:41:49.170 に答える
0

推論が明確であれば、コンパイラは型を推論できます。それ以外の場合は、これらのテンプレート引数の形式でコンパイラにヒントを提供する必要がある場合があります。

于 2012-07-01T16:44:09.780 に答える
0

make_tuple 関数は単なる通常の関数テンプレートです。自分でも同じことができます。

于 2012-07-01T16:44:13.760 に答える