自動型推論によるテンプレート継承のエミュレーション
auto を使用してテンプレート引数を自動的に指定する機能は、明示的に入力する状況で便利なショートカットを提供します。 out の完全な型は退屈または複雑になる可能性があります。ただし、C は現在、テンプレート
便利な引数の受け渡しにマクロを使用する
回避策として、マクロを利用して自動型推論をシミュレートできます。次の例を考えてみましょう。
<code class="cpp">#define AUTO_ARG(x) decltype(x), x Foo f; f.bar<AUTO_ARG(5)>(); // Equivalent to f.bar<int, 5>() f.bar<AUTO_ARG(&Baz::bang)>(); // Equivalent to f.bar<decltype(&Baz::bang), &Baz::bang>()</code>
このアプローチでは呼び出し構文を簡素化できますが、潜在的な落とし穴が発生し、明示的なマクロ呼び出しが必要になります。
自動推定のためのテンプレート ジェネレーターの利用
別の解決策には、テンプレート ジェネレーター関数の作成が含まれます:
<code class="cpp">template <typename T> struct foo { foo(const T&) {} // Perform specific actions }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
このジェネレーターでは、テンプレート引数の型を明示的に指定する代わりに、
<code class="cpp">foo<int>(5);</code>
Oneジェネレーター関数の演繹機能を使用できます:
<code class="cpp">make_foo(5); // Deduces and creates foo<int>(5)</code>
以上が自動型推論は C のテンプレート継承をエミュレートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。