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