Questions marquées «sfinae»

27
Vérification modèle de l'existence d'une fonction membre de classe?
Est-il possible d'écrire un modèle qui change de comportement selon qu'une certaine fonction membre est définie sur une classe? Voici un exemple simple de ce que je voudrais écrire: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Donc, si class Ta toString()défini, …



2
Comment fonctionne `void_t`
J'ai regardé le discours de Walter Brown au Cppcon14 sur la programmation de modèles modernes ( Partie I , Partie II ) où il a présenté sa void_ttechnique SFINAE. Exemple: étant donné un modèle de variable simple qui évalue voidsi tous les arguments du modèle sont bien formés: template< class …
149 c++  templates  c++14  sfinae 


9
Exemples C ++ SFINAE?
Je veux entrer dans plus de méta-programmation de modèles. Je sais que SFINAE signifie «l'échec de la substitution n'est pas une erreur». Mais quelqu'un peut-il me montrer une bonne utilisation de SFINAE?

2
Comment std :: is_function est-il implémenté?
À quoi sert la mise en œuvre suivante std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (d'après la référence du RPC ) Il me semble qu'un intserait une fonction selon cette définition. Qu'est-ce que je rate?
82 c++  templates  std  sfinae 

2
Approches pour fonctionner SFINAE en C ++
J'utilise beaucoup la fonction SFINAE dans un projet et je ne sais pas s'il existe des différences entre les deux approches suivantes (autres que le style): #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 …
40 c++  sfinae 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.