Restrições de modelo em C
Em C , atualmente não há suporte integrado para impor restrições em parâmetros de modelo, como visto em C# usando restrições genéricas. No entanto, existem soluções alternativas para obter um efeito semelhante.
C 11 Static Assertion
C 11 fornece a macro static_assert e o modelo std::is_base_of para executar o tempo de compilação verificações. No exemplo fornecido, você pode usá-los da seguinte maneira:
#include
template
class Foo {
Foo() {
// Compile-time check
static_assert(std::is_base_of::value, "type parameter of this class must derive from IFoo");
// ...
}
};
Isso garante que o parâmetro T deve ser derivado de IFoo em tempo de compilação, evitando instanciações como Foo
C 0x Template Constraints
Observe que C 0x, também conhecido como C 17, introduz suporte nativo para o conceito de restrições de modelo, permitindo que você especifique restrições diretamente em parâmetros de modelo usando sintaxe como template
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3