Ограничения шаблона в C
В C в настоящее время нет встроенной поддержки для обеспечения соблюдения ограничений на параметры шаблона, как это видно в C# с использованием общие ограничения. Однако существуют обходные пути для достижения аналогичного эффекта.
C 11 Static Assertion
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