Articles of modelos em

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 […]

tipo de retorno à direita usando decltype com uma function de modelo variadic

Eu quero escrever um sumdor simples (para risos) que adiciona todos os argumentos e retorna uma sum com o tipo apropriado. Atualmente, tenho isto: #include using namespace std; template T sum(const T& in) { return in; } template auto sum(const T& t, const P&… p) -> decltype(t + sum(p…)) { return t + sum(p…); } […]

C ++ invocar construtor de modelo explícito

Você pode me dizer como invocar o construtor de modelo explicitamente (na lista de inicializadores)? por exemplo: struct T { template T(); }; struct U { U() : t() {} //does not work T t; }; obrigado

C ++ 11 make_pair com parâmetros de modelo especificados não compila

Eu estava apenas brincando com o g ++ 4.7 (um dos últimos instantâneos) com -std = c ++ 11 ativado. Eu tentei compilar um pouco da minha base de código existente e um caso que falhou um pouco me confunde. Eu apreciaria se alguém pudesse explicar o que está acontecendo. Aqui está o código #include […]

Como explicito explicitamente uma function de modelo?

Eu tenho uma function de modelo com um argumento. Eu tenho que instanciar essa function sem chamar essa function significa explicitamente eu tenho que instanciar. Eu tenho essa function: template int function_name(T a) {} Instanciei essa function assim: template int function_name(int); Mas eu tenho os seguintes erros: error: expected primary-expression before ‘template’ error: expected `;’ […]

Use ‘class’ ou ‘typename’ para parâmetros de modelo?

Duplicar Possível: C ++ diferença de palavras-chave ‘typename’ e ‘class’ em modelos Ao definir um modelo de function ou modelo de class em C ++, pode-se escrever isto: template … ou pode-se escrever isso: template … Existe uma boa razão para preferir um ao outro? Aceitei a resposta mais popular (e interessante), mas a resposta […]

Como funciona o `is_base_of`?

Como o código a seguir funciona? typedef char (&yes)[1]; typedef char (&no)[2]; template struct Host { operator B*() const; operator D*(); }; template struct is_base_of { template static yes check(D*, T); static no check(B*, int); static const bool value = sizeof(check(Host(), int())) == sizeof(yes); }; //Test sample class Base {}; class Derived : private Base […]

Instanciação explícita – quando é usada?

Após algumas semanas, estou tentando expandir e estender meu conhecimento de modelos com o livro Templates – The Complete Guide de David Vandevoorde e Nicolai M. Josuttis, e o que estou tentando entender neste momento é a instanciação explícita de templates . Na verdade, não tenho um problema com o mecanismo, mas não consigo imaginar […]

Modelos C ++ que aceitam apenas determinados tipos

Em Java você pode definir classs genéricas que aceitam apenas tipos que estendem a class de sua escolha, por exemplo: public class ObservableList { … } Isso é feito usando a palavra-chave “extends”. Existe algum equivalente simples para essa palavra-chave em C ++?

usando template externo (C ++ 11)

Figura 1: modelos de function TemplHeader.h template void f(); TemplCpp.cpp template void f(){ //… } //explicit instantation template void f(); Main.cpp #include “TemplHeader.h” extern template void f(); //is this correct? int main() { f(); return 0; } Essa é a maneira correta de usar o extern template ou eu uso essa palavra-chave apenas para modelos […]