Perguntas com a marcação «templates»

A tag templates é usada em vários contextos: programação genérica (especialmente C ++) e geração de dados / documentos usando mecanismos de template. Ao usar esta tag em questões pesadas da implementação - marque o idioma do código em que a implementação está escrita.







1
Tentando entender modelos e pesquisa de nome
Estou tentando entender os seguintes trechos de código Snippet # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Nem o gcc9 nem o clang9 lançam um erro aqui. P. por que esse código é compilado? Não estamos instanciando …


1
Como entender a resolução proposta do # 1664
Depois de examinar a resolução proposta no # 1664 ( resolução proposta no 1664 ), estou confuso com as regras de um argumento padrão de um modelo de função, cite o conteúdo aqui: De acordo com 8.1.5 [expr.prim.lambda] parágrafo 3 O tipo de fechamento é declarado no menor escopo de …

1
Dedução de tipo incorreto ao passar o ponteiro de função sobrecarregado e seus argumentos
Estou tentando fornecer um invólucro std::invokepara deduzir o tipo de função mesmo quando a função está sobrecarregada. (Fiz uma pergunta relacionada ontem para a versão do ponteiro variável e do método). Quando a função possui um argumento, esse código (C ++ 17) funciona conforme o esperado em condições normais de …

7
É possível corresponder parâmetros de modelo inteiro recursivamente em C ++?
Eu tenho o seguinte problema. Eu defino um vetor dimensional N como #include <vector> #include <utility> #include <string> template <int N, typename T> struct NVector{ typedef std::vector<typename NVector<N-1,T>::type> type; }; template <typename T> struct NVector<1,T> { typedef std::vector<T> type; }; Desejo escrever um mapa de função de ordem superior que …



2
Por que uma especialização parcial de modelo de classe em uma classe de modelo correspondente é ambígua com outra especialização parcial sem a correspondência de modelo?
A pergunta pode ser muito difícil de descrever na frase do título, mas aqui está um exemplo mínimo: #include <iostream> #include <type_traits> template <class T, class U, class Enabler> struct my_trait : std::false_type {}; template <class T, class U> struct my_trait<T, U, std::enable_if_t<std::is_same<T, U>::value>> : std::true_type {}; template <class T> …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.