Articles of Modelos

Construtor de modelo C ++

Desejo ter uma class que não seja de modelo com um construtor de modelo sem argumentos. Tanto quanto eu entendo, é impossível tê-lo (porque iria entrar em conflito com o construtor padrão – estou certo? ), E a solução alternativa é o seguinte: class A{ template A(U* dummy) { // Do something } }; Talvez […]

Por que não inferir o parâmetro de modelo do construtor?

minha pergunta hoje é bem simples: por que o compilador não pode inferir parâmetros de modelo de construtores de class, da mesma forma que pode fazer a partir de parâmetros de function? Por exemplo, por que o código a seguir não pode ser válido: template class Variable { obj data; public: Variable(obj d) { data […]

Metaprogramação: falha na definição da function define uma function separada

Nesta resposta eu defino um modelo baseado na propriedade is_arithmetic do tipo: template enable_if_t<is_arithmetic::value, string> stringify(T t){ return to_string(t); } template enable_if_t<!is_arithmetic::value, string> stringify(T t){ return static_cast(ostringstream() << t).str(); } O dyp sugere que, em vez da propriedade is_arithmetic do tipo, que to_string seja definido para o tipo seja o critério de seleção do modelo. […]

É possível emular o modelo ?

É de alguma forma possível? Eu quero que isso permita a passagem de argumentos em tempo de compilation. Suponha que seja apenas para conveniência do usuário, já que sempre é possível digitar o tipo real com template , mas para alguns tipos, isto é, funções pointer-to-member, é bastante entediante, mesmo com decltype como atalho. Considere […]

Especialização explícita no escopo não-namespace

template class CConstraint { public: CConstraint() { } virtual ~CConstraint() { } template void Verify(int position, int constraints[]) { } template void Verify(int, int[]) { } }; Compilar isso em g ++ fornece o seguinte erro: Especialização explícita no escopo não-namespace ‘class CConstraint’ Em VC, compila bem. Alguém pode por favor me avise a solução?

Como realizar o site com centenas de páginas em Angular2

Estou preparando o site do SPA contendo centenas de páginas semelhantes a artigos (além do comércio eletrônico, login etc.). Todo artigo tem seu próprio URL. Eu quero perceber isso usando Angular2. A única solução que encontrei até agora é: 1. para preparar centenas de componentes Agular2, um componente para cada artigo … … com templateUrl […]

Por que não posso usar o valor flutuante como um parâmetro de modelo?

Quando tento usar float como um parâmetro de modelo, o compilador chora para esse código, enquanto int funciona bem. É porque eu não posso usar float como um parâmetro de modelo? #include using namespace std; template class GenericClass { private: T value; public: GenericClass() { value = defaultValue; } T returnVal() { return value; } […]

O C ++ suporta contadores de tempo de compilation?

Para o propósito de introspecção, às vezes eu quis atribuir automaticamente números de série a tipos, ou algo similar. Infelizmente, a metaprogramação de modelos é essencialmente uma linguagem funcional e, como tal, não possui variables ​​globais ou estados modificáveis ​​que implementariam tal contador. Ou é? Exemplo de código por solicitação: #include int const a = […]

Função passada como argumento de modelo

Eu estou procurando as regras envolvendo passando funções de modelos C ++ como argumentos. Isso é suportado pelo C ++, conforme mostrado por um exemplo aqui: #include void add1(int &v) { v+=1; } void add2(int &v) { v+=2; } template void doOperation() { int temp=0; T(temp); std::cout << "Result is " << temp << std::endl; […]

Diferença de palavras-chave ‘typename’ e ‘class’ em templates?

Para modelos, vi as duas declarações: template template Qual é a diferença? E o que exatamente essas palavras-chave significam no exemplo a seguir (tiradas do artigo da Wikipedia na Alemanha sobre modelos)? template < template class Container, typename Type > class Example { Container< Type, std::allocator > baz; };