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

Wie kann man von ihrem "String-Namen" auf die Instanzvariable zugreifen?

Gibt es eine Möglichkeit (Meta-Programmierung?), eine Instanzvariable zu lesen / schreiben, wenn wir nur ihren String-Namen kennen? Zum Beispiel habe ich eine @ my_var-Instanzvariable, die in einer Klassenmethode verwendet wird. Während des P...
07.01.2013, 13:53
2
Antworten

C ++ - Array-Unterschriften-Operatorvorlage

Nachdem ich versucht habe, den Zugriff auf eine Speicherklasse etwas einfacher zu machen, bin ich in eine Situation geraten, über die ich nicht viel weiß. Und es ist nicht einfach, Menschen zu finden, die versuchen, dasselbe zu tun wie ich. W...
31.03.2012, 17:07
5
Antworten

Hinzufügen von Klassenattributen mit einer for-Schleife in Python

Ich habe versucht, eine Klasse aus einem Wörterbuch zu generieren: %Vor% Dies ergibt den Fehler, dass attr nicht während der for-Schleife definiert ist. Ich weiß, ich könnte schreiben: %Vor% Aber ich bin sicher, ich erinnere mich, irgend...
15.02.2010, 10:58
1
Antwort

python wie man die dynamische Klasse im Modul registriert

Ich habe Modul foo, in diesem Modul habe ich dynamisch Klasse erstellt: %Vor% Nun möchte ich erreichen, dass diese neue dynamische Klasse als eine Klasse dieses Moduls sichtbar wird: %Vor% Weißt du wie das geht?     
29.11.2012, 11:19
2
Antworten

dynamisch Funktionen zu einem Python-Modul hinzufügen

Unser Framework benötigt bestimmte Funktionen in einem hässlichen Boilerplate-Code: %Vor% Ich dachte, das könnte mit einem Dekorateur vereinfacht werden: %Vor% Das stellte sich jedoch als ziemlich schwierig heraus, hauptsächlich weil das...
25.10.2009, 16:40
3
Antworten

Wie mache ich Metaklassenänderungen rückgängig, nachdem ich GroovyShell ausgeführt habe?

Wenn ich zum Beispiel ein Groovy-Skript ausführe, das die Meta-Klasse String ändert, füge eine Methode foo () hinzu %Vor% Wenn ich danach eine neue Shell erzeuge und sie ausführe, sind die Änderungen immer noch da %Vor% Gibt es eine Mögl...
23.10.2009, 10:25
2
Antworten

Erzwingt eine bestimmte Überladung bei der Vorlagenvorlage

Betrachten Sie den folgenden Code: %Vor% Standardmäßig wird Folgendes erzeugt: %Vor% Wie man die Verwendung von Version B erzwingt, wenn der übergebene Typ eine Template-Vorlage mit dem guten Shape ist (Ich kann neue Versionen von f...
17.12.2012, 08:03
7
Antworten

Traversing Scheme-Funktion als Liste

Ist es nicht möglich, Funktionen in Schema wie jede andere Liste zu behandeln? Grundsätzlich möchte ich Folgendes tun: %Vor% Ich habe eine ähnliche Diskussion darüber gefunden, und ich fühle mich ein wenig enttäuscht, wenn dies mit Sche...
06.03.2010, 17:59
3
Antworten

C ++ - Vorlage Nicht-Typ-Parameter Typ Abzug

Ich versuche, diese Arbeit zu machen: %Vor% Der Zweck ist, eine viel komplexere Vorlage zu vereinfachen. Nach vielen Suchen finde ich keine Möglichkeit, dies in C ++ 0x zu tun, daher ist stackoverflow meine letzte Möglichkeit. ohne An...
18.07.2011, 18:14
5
Antworten

Wie kann ich alle Modelle in meiner Rails-App durchlaufen?

Ich würde gerne in der Lage sein, alle Modelle in meiner Rails-App zu durchlaufen und zu inspizieren. In Pseudo-Code würde es etwa so aussehen: %Vor% Meine Frage ist, wie überprüfe ich meine Rails App, um eine Sammlung der Modelle (rails_env...
01.05.2010, 23:11