___ 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.
___ tag123metaprogrammierung ___ Metaprogrammierung ist die Fähigkeit, die Programmierumgebung wie bei Makros oder Metaklassen neu zu programmieren.
___ qstnhdr ___ Metafunktion, um x ^ n zu berechnen und den ganzzahligen Grenzwert ohne Überlauf zurückzugeben, wenn dies nicht möglich ist?
___ answer19877048 ___
Eine Version basierend auf SFINAE:
%Vor%
Anwendungsbeispiel:
%Vor%
Ausgabe:
%Vor%
Erläuterung:
Ein konstanter Ausdruck darf kein undefiniertes Verhalten [expr.const] / 2:
enthalten
- eine Operation mit undefiniertem Verhalten [ Hinweis: einschließlich z. B. vorzeichenbehafteter Integer-Überlauf, bestimmter Zeigerarithmetik, Division durch Null oder bestimmte Schiebeoperationen
- Endnote ];
Immer dann, wenn unbounded %code% einen Überlauf erzeugt, ist der Ausdruck, der verwendet wird, um %code% zu deklarieren, kein gültiger konstanter Ausdruck. Substitution fehlschlägt und die Fallback-Funktion wird verwendet.
___ tag123integeroverflow ___ Der Ganzzahlüberlauf tritt auf, wenn das Ergebnis einer Operation größer als der Maximalwert ist, der durch den zugrunde liegenden Integertyp dargestellt werden kann.
___ tag123templatemetaprogramming ___ Template Metaprogrammierung ist eine Metaprogrammierungstechnik, bei der Templates von einem Compiler verwendet werden, um temporären Quellcode zu generieren, der vom Compiler mit dem Rest des Quellcodes zusammengeführt und dann kompiliert wird.
___ qstntxt ___
Betrachten Sie den folgenden Code:
%Vor%
Anstelle von %code% möchte ich %code% oder %code% zurückgeben, wenn %code% nicht durch %code% dargestellt werden kann. Die Schwierigkeit besteht darin, Überläufe während der Berechnung zu vermeiden, da sie bei der Kompilierung Fehler verursachen.
Wie geht das (ohne Boost)?
___ tag123c11 ___ C ++ 11 ist eine 2011 verabschiedete Version des C ++ - Sprachstandards. Sie hat viele Änderungen und Ergänzungen in der Kernsprache sowie der verbesserten und erweiterten C ++ - Standardbibliothek vorgenommen.
___