Resultados da pesquisa a pedido "sfinae"

3 a resposta

Por que minhas expressões SFINAE não funcionam mais com o GCC 8.2?

Recentemente, atualizei o GCC para 8.2 e a maioria das minhas expressões SFINAE parou de funcionar. O seguinte é um pouco simplificado, mas demonstra o problema: #include <iostream> #include <type_traits> class Class { public: template ...

2 a resposta

Várias especializações de modelo de classe SFINAE usando void_t

As especializações de modelos de várias classes são válidas, quando cada uma é distinta apenas entre padrões que envolvem parâmetros de modelo em contextos não deduzidos? Um exemplo comum destd::void_t usa-o para definir uma característica que ...

1 a resposta

Sobrecarga de resolução entre membros do modelo nas classes base e derivada

O compilador da Microsoft (Visual Studio 2017 15.2) rejeita o seguinte código: #include <type_traits> struct B { template<int n, std::enable_if_t<n == 0, int> = 0> void f() { } }; struct D : B { using B::f; template<int n, std::enable_if_t<n == ...

1 a resposta

Por que a especialização de modelo não é escolhida?

Eu escrevi o seguinte código: #include <iostream> #include <string> #include <type_traits> template<typename, typename = void> struct is_incrementable : std::false_type {}; template<typename T> struct is_incrementable<T, decltype( ...

2 a resposta

Sfinae fora de linha nas funções de membro do modelo é possível?

Demo [https://wandbox.org/permlink/ie6Naxo7GDzKOx89] A na declaração de classe de A :: foo. struct A { template <typename T> void foo(T a); };A :: foo agora é dividido por sfinae. template <typename T> typename std::enable_if<(sizeof(T) > 4), ...

2 a resposta

Implementação C ++ 98/03 std :: is_constructible

Os componentes básicos da minha biblioteca de hobby precisam trabalhar com os compiladores C ++ 98 e C ++ 11. Para aprender e me divertir, criei as implementações C ++ 98 de vários tipos de funcionalidade de suporte (comoenable_if, conditional, ...

4 a resposta

Usando std :: enable_if com parâmetros de tipo anônimo

Eu tento usarstd::enable_if com um parâmetro de tipo não utilizado e sem nome, para não distorcer oreturn tipo. No entanto, o código a seguir não compila. #include <iostream> template <typename T, typename ...

3 a resposta

SFINAE para criar o modelo base sempre resulta em erro

Então, eu estou projetando uma espécie demy_numeric_cast função para limitar os tipos de conversões disponíveis ao usar uma estrutura que estou escrevendo. Foi bem simples fazer algo como template<typename To, typename From> constexpr To ...

4 a resposta

Como resolver ambiguidade em funções sobrecarregadas usando SFINAE

Eu tenho uma biblioteca incrivelmente interessante que pode traduzir pontos: deve funcionar com qualquer tipo de ponto template<class T> auto translate_point(T &p, int x, int y) -> decltype(p.x, p.y, void()) { p.x += x; p.y += y; } ...

1 a resposta

Por que as instanciações de modelo continuam aqui para sempre?

No código a seguir, quero substituir template <typename T, typename... Args> auto check (rank<1,T>, Args... args) const -> std::enable_if_t<!has_argument_type<T, Args...>(), decltype(check(rank<2, Ts...>{}, args...))> { return check(rank<2, ...