Perguntas com a marcação «sfinae»

27
Verificação por modelo da existência de uma função de membro da classe?
É possível escrever um modelo que altera o comportamento, dependendo se uma determinada função de membro é definida em uma classe? Aqui está um exemplo simples do que eu gostaria de escrever: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Então, se …



2
Como o `void_t` funciona
Eu assisti a palestra de Walter Brown no Cppcon14 sobre programação de modelos modernos ( Parte I , Parte II ), onde ele apresentou sua void_ttécnica SFINAE. Exemplo: Dado um modelo de variável simples que avalia voidse todos os argumentos do modelo estão bem formados: template< class ... > using …
149 c++  templates  c++14  sfinae 



2
Como o std :: is_function é implementado?
Como é a implementação a seguir std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (da referência CPP ) Parece-me que uma intseria uma função sob esta definição. o que estou perdendo?
82 c++  templates  std  sfinae 

2
Abordagens para funcionar SFINAE em C ++
Estou usando fortemente a função SFINAE em um projeto e não tenho certeza se existem diferenças entre as duas abordagens a seguir (além do estilo): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class …
40 c++  sfinae 

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.