Resultados da pesquisa a pedido "sfinae"

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

SFINAE: detectar se a classe tem função livre

Existe uma maneira, usando SFINAE, para detectar se uma função livre está sobrecarregada para uma determinada classe? Basicamente, tenho a seguinte solução: struct has_no_f { }; struct has_f { }; void f(has_f const& x) { } template <typename T> ...

6 a resposta

SFINAE e detectando se um objeto de função C ++ retorna nulo

Eu li as várias autoridades sobre isso, incluemDewhurst [http://www.semantics.org/once_weakly/w02_SFINAE.pdf]e ainda não conseguimos chegar a lugar algum com essa pergunta aparentemente simples. O que eu quero fazer éligar um C ++objeto de ...

5 a resposta

Problemas do compilador SFINAE

O meu código a seguir deve detectar seT tembegin eend métodos: template <typename T> struct is_container { template <typename U, typename U::const_iterator (U::*)() const, typename U::const_iterator (U::*)() const> struct sfinae {}; template ...

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 == ...

3 a resposta

É possível usar SFINAE / templates para verificar se existe um operador?

Estou tentando verificar se um operador existe em tempo de compilação, se não, eu apenas quero que seja ignorado, existe alguma maneira de fazer isso? operador de exemplo: template <typename T> QDataStream& operator<<(QDataStream& s, const ...

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

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: verificando a existência de uma função é interrompida quando a sobrecarga é movida para outros namespaces

Quero verificar a existência de uma função em um espaço de nome específico usando SFINAE. eu encontreiSFINAE para testar uma função livre de outro espaço para ...

2 a resposta

Verifique se uma classe tem um membro de dados do ponteiro

Existe uma maneira de testar se uma classe tem um membro de dados de ponteiro? class Test { int* p; } template< typename T > foo( T bla ) { }Isso não deve compilar. porque Teste tem um membro de dados do ponteiro. Test test; foo( test )Talvez ...