Articles of modelos em

O que significa o template ?

Ao declarar um modelo, estou acostumado a ter esse tipo de código: template Mas nesta questão , eles usaram: template Eu verifiquei que compila. Mas o que isso significa? É um parâmetro sem tipo? E se sim, como podemos ter um template sem nenhum parâmetro de tipo?

especialização explícita da function de membro de class de modelo

Preciso especializar a function de membro de modelo para algum tipo (digamos, duplo ). Ele funciona bem, enquanto a própria class X não é uma class de modelo, mas quando eu faço isso, o GCC começa a fornecer erros em tempo de compilation. #include #include template class X { public: template void get_as(); }; template […]

CRTP para evitar o polymorphism dynamic

Como posso usar o CRTP em C ++ para evitar a sobrecarga de funções de membros virtuais?

Polimorfismo estático de C ++ (CRTP) e usando typedefs de classs derivadas

Eu li o artigo da Wikipedia sobre o padrão de modelo curiosamente recorrente em C ++ para fazer polymorphism estático (read: compile-time). Eu queria generalizá-lo para que eu pudesse alterar os tipos de retorno das funções com base no tipo derivado. (Isso parece ser possível, já que o tipo base conhece o tipo derivado do […]

Problema do GCC: usando um membro de uma class base que depende de um argumento de modelo

O código a seguir não compila com o gcc, mas com o Visual Studio: template class A { public: T foo; }; template class B: public A { public: void bar() { cout << foo << endl; } }; Eu recebo o erro: test.cpp: Na function de membro ‘void B :: bar ()’: test.cpp: 11: […]

Argumentos de modelo padrão para modelos de function

Por que argumentos de modelo padrão são permitidos somente em modelos de class? Por que não podemos definir um tipo padrão em um modelo de function de membro? Por exemplo: struct mycclass { template void mymember(T* vec) { // … } }; Em vez disso, o C ++ força que os argumentos de modelo padrão […]

O que exatamente é o “contexto imediato” mencionado no Padrão C ++ 11 para o qual a SFINAE se aplica?

O parágrafo 14.8.2 / 8 da norma C ++ 11 especifica as condições sob as quais uma falha de substituição deve ou não resultar em um erro de compilation “difícil” (fazendo com que a compilation falhe) ou em um erro “soft” que apenas faça com que o compilador descarte um modelo de um conjunto de […]

Como mapear facilmente enums de c ++ para strings

Eu tenho um monte de tipos enum em alguns arquivos de header de biblioteca que eu estou usando e eu quero ter uma maneira de converter valores de enum para seqüências de usuário – e vice-versa. O RTTI não faz isso por mim, porque as ‘strings de usuário’ precisam ser um pouco mais legíveis do […]

std :: function vs template

Graças ao C ++ 11, recebemos a família std::function dos wrappers functor. Infelizmente, continuo ouvindo apenas coisas ruins sobre essas novas adições. O mais popular é que eles são terrivelmente lentos. Eu testei e eles realmente sugam em comparação com modelos. #include #include #include #include template float calc1(F f) { return -1.0f * f(3.3f) + […]

Por que a dedução de argumento de modelo não está funcionando aqui?

Eu criei duas funções simples que obtêm parâmetros de modelo e uma estrutura vazia definindo um tipo: //S::type results in T& template struct S { typedef typename T& type; }; //Example 1: get one parameter by reference and return it by value template A temp(typename S::type a1) { return a1; } //Example 2: get two […]