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. ___
2
Antworten

Warum ist es wichtig, über Metaprogrammierung und Eigenklassen in Ruby zu lernen?

Ich experimentiere gerade mit Ruby und Rails und habe ein paar Abschnitte in Tutorials und Büchern über Metaprogrammierung gemacht. Viele erwähnen, dass es ein wesentlicher Bestandteil von Ruby ist, aber sie gehen nicht wirklich ins Detail. Es i...
23.08.2011, 07:17
2
Antworten

Warum ist boost :: is_sameint const &, boost :: add_constrint & :: value gleich false?

Ich arbeite durch "C ++ Template Metaprogramming" von Abrahams & amp; Gurtovoy " Dies ist nicht wirklich in Kapitel zwei, aber ist etwas, was ich versuchte, während ich an der ersten Übung (2.10, 2.0) arbeitete, die mich verwirrte: %Vor% D...
02.06.2011, 16:39
5
Antworten

Ruby - Konvertiere von einem Symbol in eine Variable

Wie kann ich: obj zurück in eine Variable namens obj innerhalb des def? %Vor% UPDATE : Der endgültige Code ist aufwendiger als das, aber ... Ich mag es, sagen zu können %Vor% statt %Vor% Ich arbeite an einer DSL-ähnlichen Syntax....
06.10.2009, 17:52
2
Antworten

Wie definiere ich die Instanzmethode in Ruby dynamisch?

Ich möchte die Instanzmethode der Kindklasse dynamisch über die Klassenmethode der Elternklasse erstellen. %Vor% Was ist in Zeile 3 zu schreiben?     
03.07.2012, 15:35
1
Antwort

Vordefinierte Methoden in Scala erweitern

Basisfrage: Warum kann ich in Scala nur schreiben: %Vor% Warum muss ich nicht schreiben: %Vor% Folgefrage: Wie kann ich eine neue Methode "foo" einführen, die überall sichtbar und verwendbar ist wie "println"?     
04.05.2010, 10:00
3
Antworten

Wie funktioniert super (), indem die Zelle __class__ manuell gefüllt wird?

In Python 3 kann man super() anstelle von super(MyClass, self) verwenden, aber das funktioniert nur in Methoden, die innerhalb der Klasse definiert wurden. Wie in Artikel von Michele Simionato beschrieben, funktioniert das folgende Beisp...
03.02.2011, 10:45
7
Antworten

Extrahieren Sie den Rückgabetyp einer Funktion, ohne sie aufzurufen (mit Vorlagen?)

Ich suche nach einem Weg in C ++, um den Rückgabetyp einer Funktion zu extrahieren (ohne sie aufzurufen). Ich nehme an, dies wird einige Template-Magie erfordern. %Vor% Ich untersuche derzeit, wie magic_template implementiert werden könnt...
05.01.2010, 11:51
1
Antwort

Wie mache ich einen weniger als Vergleich in der Template-Metaprogrammierung?

Ich hatte diese Frage am Montag von mir bekommen und für das Leben von mir weiß ich nicht, wie ich antworten soll. Da ich es nicht weiß, möchte ich jetzt sehr viel herausfinden. Neugier tötet diese Katze. Gegeben zwei Integer, geben Sie die klei...
22.07.2010, 13:11
3
Antworten

Verwenden von JSON-Schlüsseln als Attribute in geschachtelten JSON

Ich arbeite mit verschachtelten JSON-ähnlichen Datenstrukturen in Python 2.7, die ich mit einem fremden Perl-Code tausche. Ich will nur mit diesen verschachtelten Strukturen von Listen und Wörterbüchern auf amore pythonalem Weg arbeiten. Wenn...
05.04.2012, 10:22
2
Antworten

Klassenmethoden dynamisch in Ruby definieren

In Ruby 1.9.3 muss ich einige Klasseninstanzen anlegen, die jeweils ähnliche Instanz- und Klassenmethoden haben, aber nur um einige feste Parameter variieren. Die Unterscheidung ihrer Klassenart ist ebenfalls wichtig, daher kann ich nicht einfac...
12.12.2012, 19:55