テンプレート パラメーターの自動キーワード: 実現可能性と現在の制限の評価
C ではテンプレート パラメーター内での網羅的な型のインスタンス化が可能ですが、次のような疑問が残ります。テンプレート パラメータは、「auto」キーワードを使用して明示的に宣言できます。これにより、コンパイル時の利便性が大幅に向上し、特にメンバー関数へのポインターのような複合型の場合、引数の型を手動で指定する必要がなくなりました。
現在の制限
このような機能は魅力的ですが、現時点では C 言語内では不可能です。提供されているコード例では、「auto」を使用してテンプレート パラメーターを定義しようとしていますが、コンパイラは従来の構文を厳密に適用し、テンプレート パラメーター内で明示的な型宣言を必要とします。
回避策
この制限に対する直接的な解決策は依然としてわかりにくいものの、引数の受け渡しを簡素化する実行可能な回避策があります。
<code class="cpp">#define AUTO_ARG(x) decltype(x), x</code>
このマクロは次のように利用できます:
<code class="cpp">f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
<code class="cpp">template <typename T> struct foo { foo(const T& x) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
このジェネレーター関数では、引数の受け渡しを簡素化できます。
<code class="cpp">make_foo(5); make_foo(&Baz::bang);</code>
今後の考慮事項
これらの回避策はありますが、実用的なソリューションを提供する場合でも、テンプレート パラメーター内に「auto」キーワードを含めることは、将来の C バージョンの潜在的な拡張機能として考慮される可能性があります。
以上がC のテンプレート パラメータに「auto」を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。