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

Programmatisch Alias ​​Methode, die $ & Globale Variable verwendet

Ich versuche, eine Methode zu aliasieren, die Rubys spezielle $& verwendet ( gibt die letzte Regex-Übereinstimmung zurück ). Ich kann das manuell tun und es funktioniert: %Vor% Wenn ich jedoch versuche, eine Methode zu schreiben, die...
28.05.2015, 17:09
1
Antwort

Gibt es einen Metaprogrammierungsmusterkatalog für Python?

Ich habe gerade Python Cookbook gelesen. Das Buch ist erstaunlich. Ich denke, der beste Nutzen dieses Buches ist, dass es viele Beispiele gibt, die python in realen Problemanwendungen zeigen. Viele der Idiome beinhalten Metaprogrammierungstec...
22.01.2010, 14:38
1
Antwort

Template-Parameterliste mit Schablonentypen

C ++ erlaubt Template-Template-Parameter wie folgt: %Vor% Der Bool -Typ kann durch typedef ersetzt werden (es ist also nicht erforderlich, dass der ursprüngliche Typname in der Deklaration angezeigt wird): %Vor% Das funktioniert perf...
31.03.2011, 09:11
1
Antwort

Eine weitere Einschränkung von F # -Angeboten?

Früher stieß ich heute auf eine Einschränkung von F # -Angeboten und stellte hier eine Frage dazu: F # -Angebote: Variable kann den Bereich verlassen Nun, ich habe vielleicht eine andere Einschränkung bei der Konvertierung von Beispielen ge...
20.06.2011, 21:51
2
Antworten

Was ist der Zweck von Rubys Mechanismus zum Auflösen der Methode?

Method#unbind gibt einen UnboundMethod Verweis auf die Methode, die später mit UnboundMethod#bind an ein anderes Objekt gebunden werden kann . %Vor% Am Anfang fand ich das unglaublich toll, weil ich erwartet hatte, dass es ähnli...
14.11.2015, 12:10
2
Antworten

Überprüfung, ob eine Funktion eine C-Verknüpfung zur Kompilierungszeit hat [nicht lösbar]

Gibt es eine Möglichkeit zu überprüfen, ob eine bestimmte Funktion mit C-Verknüpfung (das heißt mit extern "C" ) zur Kompilierzeit deklariert wird? Ich entwickle ein Plugin-System. Jedes Plugin kann dem Plugin-Ladecode Factory-Funktionen zu...
29.05.2010, 19:40
5
Antworten

Wann 'method_missing' zu verwenden ist

Im folgenden Code ist die Methode roar nicht in der Klasse Lion definiert, kann aber trotzdem mit method_missing aufgerufen werden. %Vor% In welchen Situationen und wie soll ich dieses method_missing verwenden? Und ist es sicher...
07.12.2012, 09:04
2
Antworten

Grundlegende Metaprogrammierung: Erweitern einer bestehenden Klasse mit einem Modul?

Ich möchte, dass ein Teil meines Moduls die String-Klasse erweitert. Dies funktioniert nicht %Vor% Aber das macht %Vor% Ich möchte nicht, dass alle anderen Funktionen von MyModule in String angezeigt werden. Es wieder auf höchster...
30.08.2011, 11:22
6
Antworten

Kann ich das Curiously Recurring Template Pattern hier (C ++) verwenden?

Ich habe eine C ++ - Anwendung, die zu etwas wie diesem vereinfacht werden kann: %Vor% Meine Anwendung ist leistungskritisch. In der Sammlung befinden sich normalerweise Tausende von Widgets. Die von AbstractWidget abgeleiteten Klassen (v...
16.06.2009, 16:27
10
Antworten

Überschreibende Methodenaufrufe in Ruby?

Ich versuche, einen Rückruf zu erhalten, wenn irgendeine Methode für eine bestimmte Klasse aufgerufen wird. Überschreiben "Senden" funktioniert nicht. Es scheint, dass send nicht im normalen Ruby-Methodenaufruf aufgerufen wird. Nehmen Sie das fo...
03.02.2010, 16:26