Perguntas com a marcação «template-specialization»

4
Por que o template de função não pode ser parcialmente especializado?
Eu sei que a especificação da linguagem proíbe a especialização parcial do template de função. Eu gostaria de saber o motivo pelo qual isso proíbe? Eles não são úteis? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not …


1
Clang está correto ao rejeitar o código no qual a classe aninhada de um modelo de classe é definida apenas por meio de especializações?
Dado o seguinte modelo de classe: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; definimos Innerseparadamente para cada especialização de Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; e defina a função de membro fuma vez para todas as especializações de Outer: auto Outer<T>::f(Inner) -> …



1
Especialização baseada na validade do tamanho da matriz
Tentando se especializar com base na validade do tamanho da matriz: // base template template<int p, typename T = void> struct absolute { operator int () const { return 0; } }; // positive case template template<int p> struct absolute<p, typename std::void_t<int[p]>> { operator int () const { return p; …

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.