Substitutionsfehler ist kein Fehler. Dies ist eine C ++ - Programmiertechnik, mit der Vorlagen Eigenschaften ihrer Template-Parameter verifizieren können, so dass verschiedene Spezialisierungen verwendet werden können, wenn bestimmte Arten von Objekten verfügbar sind.
Wenn SFINAE für einen beliebigen Typ ausgeführt wird, muss das Ergebnis eines Ausdrucks oft in void umgewandelt werden. Ich habe zwei Möglichkeiten gesehen, dies zu tun; eine Besetzung zu void:
%Vor%
Oder alternativ den Kommaoperator mit...
03.03.2015, 16:48
Es gibt eine Technik, die ich manchmal beim Überschreiben von template -Funktionen verwende, die folgendermaßen aussieht:
%Vor%
Dies unterscheidet do_stuff von do_stuff , weil einer 0 oder mehr UniqueEnum<1> s und der andere...
14.06.2013, 19:41
Als Follow-up zu meine vorherige Frage , versuche ich die Existenz einer Template-Funktion zu erkennen, die eine explizite Spezialisierung erfordert.
Mein aktueller Arbeitscode erkennt Nicht-Template-Funktionen (dank der Hilfe von DyP), vora...
21.09.2013, 18:45
Das ist nur eine Frage zum Stil: Ich mag die Art und Weise von C ++ für die Template-Metaprogrammierung nicht, die erfordert, dass Sie den Rückgabetyp verwenden oder ein zusätzliches Dummy-Argument für die Tricks mit SFINAE hinzufügen. Also, die...
05.01.2012, 13:17
Der folgende Code von mir sollte erkennen, ob T begin und end Methoden hat:
%Vor%
Und hier ist ein Testcode:
%Vor%
In g ++ 4.5.1 lautet die Ausgabe 1 1 1 1 . In Visual Studio 2008 lautet die Ausgabe jedoch 1 1 0 0 . Habe ich...
03.12.2010, 17:00