「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C++ でテンプレート パラメーターに制約を適用するにはどうすればよいですか?

C++ でテンプレート パラメーターに制約を適用するにはどうすればよいですか?

2024 年 11 月 11 日に公開
ブラウズ:143

How can I enforce constraints on template parameters in C  ?

C のテンプレート制約

C では、現在、C# で見られるようにテンプレート パラメーターに制約を適用するための組み込みサポートはありません。一般的な制約。ただし、同様の効果を達成するための回避策があります。

C 11 静的アサーション

C 11 は、コンパイル時に実行するための static_assert マクロと std::is_base_of テンプレートを提供します。小切手。提供された例では、これらを次のように使用できます:

#include 

template
class Foo {
    Foo() {
        // Compile-time check
        static_assert(std::is_base_of::value, "type parameter of this class must derive from IFoo");

        // ...
    }
};

これにより、T パラメータはコンパイル時に IFoo から派生する必要があり、提供された例の Foo のようなインスタンス化が防止されます。

C 0x Template Constraints

C 0x (C 17 とも呼ばれます) では、テンプレート制約の概念のネイティブ サポートが導入されており、template ::値>。ただし、この機能は現在の C 標準では使用できません。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3