Articles of modelos

Inicialização de membro estático em uma class de modelo

Eu preciso inicializar um bool estático dentro de uma class de modelo e tentei fazer assim. A única diferença que eu posso ver é que eu tenho uma restrição no parâmetro de tipo T, mas isso causa um erro de compilation, por quê? Como posso resolver isso? Código é o seguinte: template<class T, class = […]

Maneira simples de adicionar promoção de tipo implícito aos operadores de class std :: complex

Eu gostaria de permitir a conversão implícita ao sumr dois números complexos std::complex a; std::complex b; auto c = a+b; Eu tentei implementar o que foi sugerido aqui C ++ implícito tipo conversão com modelo Eu defini uma class derivada de std :: complex e adicionei a function friend que deveria permitir a conversão implícita. […]

Fornecer access ao AoS ao SoA

Eu tenho dados dispostos na memory em um formulário Estrutura de Arrays (SoA) ou Sturcture of Pointers (SoP), e tenho uma maneira de acessar esses dados como se estivessem dispostos no formulário Array of Structure (AoS) – código dado abaixo. No entanto, eu não estou muito feliz com o uso de struct AoS_4_SoP – embora […]

erro C2761 redeclaração de function de membro não permitida

Eu encontrei um problema (erro C2761) ao escrever especializações para uma class. Minhas aulas são as seguintes: class Print{ public: typedef class fontA; typedef class fontB; typedef class fontC; typedef class fontD; template void startPrint(void) { return; }; virtual bool isValidDoc(void) = 0; }; Eu tenho uma class QuickPrint que herda a class Print : […]

tipos de modelos nesteds

Eu quero exigir um tipo de modelo para ser um tipo de modelo: template < template class alpha > gamma foo() { // do stuff with beta, gamma gamma c[beta]; alpha a(); alpha b(); } Eu quero ter gamma e beta decididos pelos valores que dou, então: foo< hello >() irá criar um hello object […]

Funções de modelo C ++ são automaticamente estáticas? (Não, eles não são)

Quando você escreve uma function de modelo (ou membro) você tem que escrever o corpo no arquivo de header. Isso faz todo o sentido, uma vez que os modelos são essencialmente instruções para o compilador como fazer funções dinamicamente com base em um tipo desconhecido até a boot. Minha pergunta está conectada a uma regra […]

array de potência 2s usando template em c ++

Podemos criar o seguinte array ou algo semelhante usando template em c ++ em tempo de compilation. int powerOf2 [] = {1,2,4,8,16,32,64,128,256} Este é o mais próximo que eu tenho. template struct PowerArray{enum { value=2* PowerArray::value };}; mas então para usar eu preciso de algo como PowerArray que o compilador dá erro como eu é […]

Variável estática na function de modelo não parece exclusivo para instância de modelo

Eu estou tentando aprender sobre memoization usando C ++ junto com boost e a especificação de C ++ 11. No entanto, eu me deparo com um problema que estou tendo dificuldade em envolver minha cabeça. Estou seguindo um tutorial aqui: Memoization em C e o tutorial diz que você pode generalizar o memoization de funções […]

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

Forçar instanciação de modelo em outro header

Eu tenho uma class de “coleção” de modelos. Eu não quero que o código seja recompilado em todos os arquivos de origem. Mas essa coleção deve ser usada com DataTypes ( class SpecialDataMember : DataMember ) não definida na definição da class de modelo. É por isso que não posso forçar a instanciação no arquivo […]