Restricciones de plantilla en C
En C, actualmente no hay soporte integrado para imponer restricciones en los parámetros de plantilla como se ve en C# usando restricciones genéricas. Sin embargo, existen soluciones para lograr un efecto similar.
C 11 Static Assertion
C 11 proporciona la macro static_assert y la plantilla std::is_base_of para realizar la compilación en tiempo cheques. En el ejemplo proporcionado, puede utilizarlos de la siguiente manera:
#include
template
class Foo {
Foo() {
// Compile-time check
static_assert(std::is_base_of::value, "type parameter of this class must derive from IFoo");
// ...
}
};
Esto garantiza que el parámetro T debe derivarse de IFoo en tiempo de compilación, evitando instanciaciones como Foo
Restricciones de plantilla C 0x
Tenga en cuenta que C 0x, también conocido como C 17, introduce soporte nativo para el concepto de restricciones de plantilla, lo que le permite especificar directamente restricciones en los parámetros de la plantilla usando sintaxis como plantilla
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3