metaprogramming

___ 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. ___
1
Antwort

typedef vs öffentliche Vererbung in C ++ Meta-Programmierung

Disclaimer: Die Frage ist völlig anders als Vererbung statt typedef und ich konnte bisher keine ähnliche Frage finden Ich spiele gerne mit C ++ - Template-Metaprogrammierung (zu Hause meistens, manchmal stelle ich es bei der Arbeit leicht...
04.10.2009, 11:52
1
Antwort

Probleme bezüglich const declltype (x) &

Betrachten Sie den folgenden Code: %Vor% Es kompiliert auf clang 3.5, während GCC 4.9 den folgenden Fehler gibt: error: 'const' qualifiers cannot be applied to 'const int&' Welcher entspricht dem Standard? Meine Vermutung ist, d...
09.04.2015, 14:10
2
Antworten

C ++ / Boost MPL: Strukturcode ebenfalls Haskell's lassen, wo,

Da C ++ - Metaprogrammierung funktional ist: Gibt es irgendeinen Weg, etwas zu tun, das mit irgendwelchen funktionellen Programmiersprachen (z. B. Haskell's) oder wo konstruiert ist? Ich verwende Boost :: MPL, möchte aber mehr Struktur für lä...
27.06.2012, 08:39
1
Antwort

Wie wird proc ausgeführt, wenn es an 'instance_exec' übergeben wird

Die Frage ist inspiriert von diesem . Proc::new hat eine Option, die ohne einen Block innerhalb einer Methode aufgerufen werden kann:    Proc::new darf ohne einen Block nur innerhalb einer Methode mit angehängtem Block aufgerufen we...
22.11.2016, 10:28
1
Antwort

Implementierung von Lazy-Loaded-Modulen in VBScript

Vor einer Weile brauchte ich eine Lösung, um Bibliotheken in VBScript zu importieren. VBScript hat als Referenz keine integrierten Importfunktionen. Die traditionelle Methode zum Importieren von Dateien besteht darin, SSI zu verwenden, die de...
16.08.2010, 22:15
1
Antwort

Spezialisiert, wenn der Wert einer Variablen zur Kompilierzeit bekannt / unbekannt ist

Wie spezialisiere ich eine Template-Funktion für den Fall, dass der Wert eines Arguments während der Kompilierzeit bekannt / unbekannt ist (bevor das Programm tatsächlich kompiliert und ausgeführt wird)? Ich kann noch nicht herausfinden wie....
28.09.2016, 09:11
2
Antworten

Kann ich Roslyn zum Kompilieren von Zeitcode verwenden?

Zum Beispiel habe ich %Vor% Kann ich die Foo-Klasse AST bekommen und Bar in der Kompilierzeit zu umschreiben %Vor% .     
20.10.2011, 09:38
4
Antworten

Warum lehnt Python eval () diese mehrzeilige Zeichenfolge ab und wie kann ich sie beheben?

Ich versuche, die folgende Tab-eingerückte Zeichenfolge auszuwerten: %Vor% Ich bekomme, "Es gab einen Fehler: ungültige Syntax, Zeile 1" Worüber beklagen sie sich? Muss ich einrücken, um der eval () -Anweisung zu entsprechen, oder schreib...
02.10.2012, 20:44
2
Antworten

Wie kann dieser Code ohne Boost neu geschrieben werden?

Meine Aufgabe ist es, Sergiu Dotencos Well Equidistributed zu modifizieren Long-period Linear (WELL) -Algorithmus Code, um Boost nicht zu verwenden (nicht zu sagen, dass Boost schlecht ist, aber aufgrund der Unternehmenspolitik muss ich es ent...
13.12.2017, 01:58
4
Antworten

Wie können Sie in Python den Namen der Klasse einer Mitgliedsfunktion erhalten?

Ich habe eine Funktion, die eine andere Funktion als Parameter übernimmt. Wenn die Funktion ein Mitglied einer Klasse ist, muss ich den Namen dieser Klasse finden. ZB %Vor% Ich dachte %Vor% würde meine Probleme lösen, aber das sagt mir n...
20.11.2008, 16:30