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