Articles of modelos em

Por que devo evitar std :: enable_if em assinaturas de function

Scott Meyers postou conteúdo e status de seu próximo livro EC ++ 11. Ele escreveu que um item no livro poderia ser “Evitar std::enable_if em assinaturas de function” . std::enable_if pode ser usado como um argumento de function, como um tipo de retorno ou como um modelo de class ou parâmetro de modelo de function […]

Argumentos mágicos em modelos de function

No código a seguir #include template void cal_size(T (&a)[N]) { std::cout<<"size of array is: "<<N<<std::endl; } int main() { int a[]={1,2,3,4,5,6}; int b[]={1}; cal_size(a); cal_size(b); } Como esperado, o tamanho de ambos os arrays é impresso. Mas como o N automaticamente é inicializado com o valor correto do tamanho da matriz (matrizes estão sendo passadas […]

Quando usar std :: forward para encaminhar argumentos?

C ++ 0x mostra um exemplo de uso de std::forward : template void foo(T&& arg) { bar(std::forward(arg)); } Quando é vantajoso usar std::forward , sempre? Além disso, é necessário usar o && na declaração de parâmetros, é válido em todos os casos? Eu pensei que você tinha que passar provisórios para uma function se a […]

Uma maneira melhor de evitar a invisibilidade do membro público e o código fonte do tipo bloat / repetition com modelos de classs herdadas?

Contexto : A inheritance de membros da class protegida e pública é um conceito fundamental da programação orientada a objects. O exemplo trivial abaixo ilustra uma situação freqüentemente encontrada em que a class CDerived herda todos os membros públicos da class CBase e adiciona 1 function adicional própria sem alterar nem explicitamente redeclarar nem redefinir […]

Especialização parcial do modelo de function C ++?

Eu sei que o código abaixo é uma especialização parcial de uma class: template class MyClass { … }; // partial specialization: both template parameters have same type template class MyClass { … }; Também sei que o C ++ não permite a especialização parcial do modelo de function (somente full é permitido). Mas o […]

C ++ 11: Eu posso ir de múltiplos args para tuple, mas eu posso ir de tuple para múltiplos args?

Duplicar Possível: Como faço para expandir uma tupla nos argumentos da function de modelo variadico? “Desempacotando” uma tupla para chamar um ponteiro de function correspondente Em modelos C ++ 11, existe uma maneira de usar uma tupla como os argumentos individuais de uma function (possivelmente modelo)? Exemplo: Vamos dizer que eu tenho essa function: void […]

function de membro de modelo da class de modelo chamada da function de modelo

Isso não compila: template struct A { template void f() {} }; template void g() { A a; af(); // Compilation fails here (Line 18) } int main(int argc, char *argv[]) { g(); // Line 23 } O compilador (gcc) diz: hhh.cpp: Na function ‘void g ()’: hhh.cpp: 18: erro: expressão primária esperada antes de […]

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?