Als «sfinae» getaggte Fragen

27
Vorlagenprüfung für das Vorhandensein einer Klassenmitgliedsfunktion?
Ist es möglich, eine Vorlage zu schreiben, die das Verhalten ändert, je nachdem, ob eine bestimmte Elementfunktion für eine Klasse definiert ist? Hier ist ein einfaches Beispiel dafür, was ich schreiben möchte: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Wenn also …


3
Warum sollte ich std :: enable_if in Funktionssignaturen vermeiden?
Scott Meyers veröffentlichte Inhalt und Status seines nächsten Buches EC ++ 11. Er schrieb, dass ein Punkt im Buch "Vermeiden Sie std::enable_ifin Funktionssignaturen" sein könnte . std::enable_if kann als Funktionsargument, als Rückgabetyp oder als Klassenvorlage oder Funktionsvorlagenparameter verwendet werden, um Funktionen oder Klassen bedingt aus der Überlastungsauflösung zu entfernen. In …

2
Wie funktioniert `void_t`?
Ich habe Walter Browns Vortrag auf der Cppcon14 über moderne Vorlagenprogrammierung ( Teil I , Teil II ) gesehen, in dem er seine void_tSFINAE-Technik vorstellte. Beispiel: Bei einer einfachen Variablenvorlage, die bewertet, voidob alle Vorlagenargumente gut geformt sind: template< class ... > using void_t = void; und das folgende Merkmal, …
148 c++  templates  c++14  sfinae 

16
Überprüfen Sie, ob eine Klasse eine Mitgliedsfunktion einer bestimmten Signatur hat
Ich frage nach einem Vorlagentrick, um festzustellen, ob eine Klasse eine bestimmte Elementfunktion einer bestimmten Signatur hat. Das Problem ähnelt dem hier genannten Problem http://www.gotw.ca/gotw/071.htm, ist jedoch nicht dasselbe: In Sutters Buch beantwortete er die Frage, dass eine Klasse C eine Mitgliedsfunktion bereitstellen MUSS eine bestimmte Signatur, sonst wird das …
135 c++  c++11  templates  sfinae 

9
C ++ SFINAE Beispiele?
Ich möchte mehr über die Meta-Programmierung von Vorlagen erfahren. Ich weiß, dass SFINAE für "Substitutionsfehler ist kein Fehler" steht. Aber kann mir jemand eine gute Verwendung für SFINAE zeigen?

2
Wie wird std :: is_function implementiert?
Wie ist das Folgende eine Implementierung für std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (aus CPP-Referenz ) Mir scheint, eine intwäre eine Funktion unter dieser Definition. Was vermisse ich?
82 c++  templates  std  sfinae 

2
Ansätze zur Funktion von SFINAE in C ++
Ich verwende die Funktion SFINAE stark in einem Projekt und bin mir nicht sicher, ob es Unterschiede zwischen den folgenden beiden Ansätzen gibt (außer Stil): #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
Warum ist eine Teilklassenvorlagenspezialisierung für eine übereinstimmende Vorlagenklasse mit einer anderen Teilspezialisierung ohne Vorlagenübereinstimmung nicht eindeutig?
Die Frage mag zu schwer zu beschreiben sein, aber hier ist ein minimales Beispiel: #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> class temped {}; template …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.