___ tag123visualstudio ___ Verwenden Sie dieses Tag, wenn Sie eine bestimmte Frage zu Visual Studio-Funktionen und -Funktionen haben. Verwenden Sie diesen Tag NICHT bei Fragen zu Code, der nur zufällig in Visual Studio geschrieben wurde. Erwägen Sie, den genauen Technologiebereich zu markieren, auf den Ihre Frage verweist, und kennzeichnen Sie auch eine spezifischere Version von Visual Studio. Bitte geben Sie Ihre genaue VS-Version, Edition und Update-Ebene in Ihrer Frage an.
___ tag123c14 ___ C ++ 14 ist der Name des C ++ - Standards, der 2014 genehmigt wurde. Er baut auf dem vorherigen C ++ 11-Standard auf und verbessert die Kernsprache und die Standardbibliothek sowie einige Funktionen.
___ tag123enabeif ___ 'std :: enable_if' ist eine C ++ Metafunktionsvorlage mit den Parametern 'bool B', 'class T = void',
definiert im Standard C ++ Header 'type_traits'. Wenn "B" wahr ist, dann das Instanziieren
Klasse definiert einen öffentlichen Mitgliedstyp "type" gleich "T"; sonst nicht.
___ tag123constexpr ___ constexpr ist ein in C ++ 11 eingeführter Modifikator, der den Compiler darüber informiert, dass der Wert einer Funktion oder Variablen bekannt ist oder zur Kompilierzeit berechnet werden kann. Als solches kann es als eine Konstante an Orten verwendet werden, wo es sonst nicht sein könnte.
___ qstntxt ___
Ich wrestle gerade mit Visual Studio 2017 (Kompilieren mit %code% , wenn das irgendeine Hilfe ist).
Der fragliche Code wählt einfach eine Struct-Spezialisierung aus, die auf dem Ergebnis einer templated %code% -Funktion basiert. GCC und Clang haben keine Probleme, es zu kompilieren.
Hier ist mein MCVE:
%Vor%
%code% ist in meiner Codebasis eigentlich ein bisschen komplexer, aber die %code% kompiliert immer noch, und prüft gut.
Ich nahm an, dass, wenn %code% kompiliert, es keinen Grund gibt, dass %code% nicht in der Lage ist, seine Magie zu machen. Liege ich falsch? Ich denke "vielleicht" %code% ist nicht technisch ein abhängiger Typ von %code% ... Aber wenn das der Fall wäre, würde ich erwarten, dass GCC und Klatschen mein Handgelenk schlagen.
Ich kann das umgehen, indem ich das Ergebnis von %code% in einem %code% einpacke, etwa so:
%Vor%
Aber ich würde wirklich lieber nicht durch diesen Reifen springen müssen.
Kann die Template-Auflösung das so lösen, wie ich es erwarte? Ich bin besorgt, dass der Code tatsächlich falsch ist, und GCC und Clang sind nur nachsichtig zu mir.
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll.
___ qstnhdr ___ enable_if funktioniert nicht in Visual Studio, wenn eine constexpr-Funktion als Argument verwendet wird
___