Tag: sfinae

Substitution Misserfolg ist nicht ein Fehler. Dies ist eine C++ – Programmierung Technik, die ermöglicht, Vorlagen überprüfen Sie die Eigenschaften über Ihre template-Parameter, so dass verschiedene Spezialisierungen verwendet werden, wenn bestimmte Arten von Objekten verfügbar sind.

erkennen typedef zur compile-Zeit (Schablone metaprogramming)

Anzahl der Antworten 4 Antworten
Ich bin derzeit dabei einige template-metaprogramming. In meinem Fall kann ich mit jedem "iteratable" geben, d.h. jede Art, für die eine typedef foo const_iterator existiert in der gleichen Weise. Ich habe versucht, verwenden Sie die neue C++11

Partielle Spezialisierung einer Methode in einer Vorlage gebildete Klasse

Anzahl der Antworten 3 Antworten
Gegeben: struct A { virtual bool what() = 0; }; template<typename T, typename Q> struct B : public A { virtual bool what(); }; Möchte ich teilweise spezialisieren what wie: template<typename T, typename Q> bool B<T, Q>::what()

mit SFINAE für die Vorlage-Klasse-Spezialisierung

Anzahl der Antworten 3 Antworten
nehme an, dass ich diese Erklärungen template<typename T> class User; template<typename T> class Data; und implementieren möchten User<> für T = Data<some_type> und jede Klasse abgeleitet Data<some_type> sondern lassen sich auch für andere Spezialisierungen definiert an anderer

Wie sieht `void_t Arbeit

Anzahl der Antworten 2 Antworten
Sah ich Walter Browns Vortrag auf Cppcon14 über moderne template-Programmierung ( Teil I , Teil II), wo er präsentiert seine void_t SFINAE-Technik. Beispiel: Eine einfache variable Vorlage ausgewertet void wenn alle template-Argumente sind gut ausgebildet: template< class

Warum enable_if_t in template-Argumente beschwert sich über neudefinitionen?

Anzahl der Antworten 4 Antworten
Ich habe folgenden Fall, der arbeitet mit std::enable_if : template<typename T, typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr> void f() { } template<typename T, typename std::enable_if<std::is_same<double, T>::value>::type* = nullptr> void f() { } Nun, ich sah in cppreference die

Wenn die Adresse einer Funktion kann nicht aufgelöst werden, während der Abzug, ist es SFINAE oder zu einem compiler-Fehler?

Anzahl der Antworten 1 Antworten
In C++0x-SFINAE-Regeln wurden vereinfacht, so dass alle ungültigen Ausdruck oder der Art, die Auftritt, in den "unmittelbaren Zusammenhang" der Abzug nicht zu einem compiler-Fehler, sondern in Abzug zu Versagen (SFINAE). Meine Frage ist: Wenn ich die Adresse

Ist es möglich, eine Vorlage schreiben, um zu überprüfen für eine Funktion Existenz?

Anzahl der Antworten 25 Antworten
Ist es möglich, eine Vorlage schreiben, die änderungen Verhalten, je nachdem, ob eine bestimmte member-Funktion in einer Klasse definiert? Hier ist ein einfaches Beispiel, was ich hätte schreiben wollen: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString))

Wie zu erkennen, ob es eine bestimmte member-variable in der Klasse?

Anzahl der Antworten 10 Antworten
Für die Erstellung Algorithmus template-Funktion, die ich brauche, um zu wissen, ob x oder X - (und y oder Y) in der Klasse ist template-argument. Es kann nützlich bei der Verwendung der Funktion für MFC CPoint-Klasse oder

Prüfen Sie, ob eine Klasse eine member-Funktion einer gegebenen Signatur

Anzahl der Antworten 14 Antworten
Frage ich ja nach einer Vorlage trick, um zu erkennen, ob eine Klasse eine spezielle member-Funktion einer gegebenen Signatur. Das problem ist ähnlich dem hier zitierten http://www.gotw.ca/gotw/071.htm aber nicht das gleiche: in der Position des Sutter '

SFINAE zu überprüfen, für geerbte member-Funktionen

Anzahl der Antworten 4 Antworten
Mit SFINAE, ich erkennen kann, ob eine bestimmte Klasse eine bestimmte member-Funktion. Aber was ist, wenn ich testen will, für geerbte member-Funktionen? Den folgenden arbeiten nicht in VC8 und GCC4 (D. H. erkennt, dass A hat eine

Wie um zu überprüfen, ob der operator== ist vorhanden?

Anzahl der Antworten 10 Antworten
Ich versuche, um ein Beispiel zu erstellen, die zu überprüfen wäre die Existenz der operator== (Mitglied oder nicht-Mitglied-Funktion). Um zu überprüfen, ob eine Klasse ein Mitglied operator== ist einfach, aber wie um zu überprüfen, ob es hat

Die Auswahl einer member-Funktion mit verschiedenen enable_if Bedingungen

Anzahl der Antworten 5 Antworten
Ich bin versucht zu ermitteln, welche version einer member-Funktion aufgerufen wird, basiert auf dem class-template-parameter. Ich habe dies ausprobiert: #include <iostream> #include <type_traits> template<typename T> struct Point { void MyFunction(typename std::enable_if<std::is_same<T, int>::value, T >::type* = 0) {

Warum compile-Fehler mit enable_if

Anzahl der Antworten 5 Antworten
Warum diese nicht kompilieren mit gcc48 und clang32? #include <type_traits> template <int N> struct S { template<class T> typename std::enable_if<N==1, int>::type f(T t) {return 1;}; template<class T> typename std::enable_if<N!=1, int>::type f(T t) {return 2;}; }; int main()

Überprüfen Sie, ob eine Klasse eine Mitgliedsfunktion einer bestimmten Signatur besitzt

Anzahl der Antworten 13 Antworten
Frage ich ja nach einer Vorlage trick, um zu erkennen, ob eine Klasse eine spezielle member-Funktion einer gegebenen Signatur. Das problem ist ähnlich dem hier zitierten http://www.gotw.ca/gotw/071.htm aber nicht das gleiche: in der Position des Sutter '

Wie kann ich einer C ++ - Anwendung Reflektion hinzufügen?

Anzahl der Antworten 30 Antworten
Ich würde gerne in der Lage sein, zu untersuchen eine C++ - Klasse für seinen Namen, Inhalt (d.h. die Mitglieder und Ihre Typen) usw. Ich spreche native C++ hier, nicht verwaltete C++, die Reflexion. Ich begreife, dass

SFINAE, um nach geerbten Mitgliedsfunktionen zu suchen

Anzahl der Antworten 4 Antworten
Mit SFINAE, ich erkennen kannob eine bestimmte Klasse eine bestimmte member-Funktion. Aber was ist, wenn ich testen will, für geerbte member-Funktionen? Den folgenden arbeiten nicht in VC8 und GCC4 (D. H. erkennt, dass A hat eine member-Funktion

Warum sollte ich std :: enable_if in Funktionssignaturen vermeiden?

Anzahl der Antworten 3 Antworten
Scott Meyers gebucht Inhalt und status von seinem nächsten Buch EG++11. Er schrieb, dass ein Element in dem Buch werden könnte "Vermeiden std::enable_if im Funktions-Signaturen". std::enable_if verwendet werden kann als Funktionsargument, als Rückgabetyp oder als eine Vorlage-Klasse

C ++ SFINAE Beispiele?

Anzahl der Antworten 7 Antworten
Möchte ich, um mehr in die template meta-Programmierung. Ich weiß, dass SFINAE steht für "substitution Misserfolg ist nicht ein Fehler." Aber kann mir jemand zeigen, eine gute Verwendung für SFINAE? InformationsquelleAutor der Frage rlbond | 2009-06-11

Wie schreibe ich eine Typeigenschaft `is_container` oder` is_vector`?

Anzahl der Antworten 10 Antworten
Ist es möglich, zu schreiben, eine Art Eigenschaft, deren Wert true ist für alle gängigen STL-Strukturen (z.B., vectorsetmap...)? Loslegen, würde ich mag zu schreiben, eine Art Eigenschaft, die true für eine vector andernfalls false. Ich habe versucht,

Wählen Sie den Klassenkonstruktor mit enable_if aus

Anzahl der Antworten 2 Antworten
Betrachten Sie folgenden code: #include <iostream> #include <type_traits> template <typename T> struct A { int val = 0; template <class = typename std::enable_if<T::value>::type> A(int n) : val(n) {}; A(...) { } /* ... */ }; struct YES

Ist es möglich, eine Vorlage zu schreiben, um nach der Existenz einer Funktion zu suchen?

Anzahl der Antworten 23 Antworten
Ist es möglich, eine Vorlage schreiben, die änderungen Verhalten, je nachdem, ob eine bestimmte member-Funktion in einer Klasse definiert? Hier ist ein einfaches Beispiel, was ich hätte schreiben wollen: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString))

Was ist "Expression SFINAE"?

Anzahl der Antworten 1 Antworten
In http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx VC++ team offiziell erklären, dass Sie noch nicht eingeführt haben, die C++11-core-Funktion "Ausdruck SFINAE". Jedoch, Die folgenden code-Beispiele kopiert von http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html akzeptiert der VC++ - compiler. Beispiel 1: template <int I> struct A {}; char

Überprüfen Sie, ob ein Mitglied mit enable_if existiert

Anzahl der Antworten 3 Antworten
Hier ist, was ich versuche zu tun: template <typename T> struct Model { vector<T> vertices ; #if T has a .normal member void transform( Matrix m ) { each vertex in vertices { vertex.pos = m *