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.
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
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()
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
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
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
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
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))
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
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 '
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
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
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) {
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()
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 '
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
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
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
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
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,
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
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))
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
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 *