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

Petrinetzzeichnung und Codegenerierung

Gibt es Software zum Zeichnen eines Petrinetzes und zum Generieren von Quellcode von dort? Der Quellcode könnte in einer bereits bekannten Programmiersprache sein ... Eine etwas weniger wünschenswerte Option wäre die Ausgabe einer Datei mit n...
09.02.2011, 14:32
1
Antwort

Haskell überlappende Instanzen und Typ-Funktionen

Ich habe die folgende Typklasse, die eine SQL-ähnliche Abfrageoptimierung modelliert: %Vor% Das Problem ist, dass ich den Fehler "Conflicting family instance declarations" bei der Funktion Optimized type bekomme. Warum ist das und wie kann i...
16.12.2010, 16:41
2
Antworten

Alle durch 'attr_accessor' definierten Variablen erhalten, ohne 'attr_accessor' zu überschreiben

Ich setze einen Trace-Code in meinem Programm und würde gerne wissen, welche Methoden durch attr_accessor definiert sind. Mit TracePoint kann ich erkennen, wenn attr_accessor aufgerufen wird, aber ich weiß nicht, wie ich es bekommen sol...
23.12.2015, 15:42
1
Antwort

Wie füge ich eine RDoc-Dokumentation für eine Methode hinzu, die mit class_eval definiert wurde?

Ich verwende class_eval , um eine Reihe repetitiver Methoden genauer zu definieren, etwa so: %Vor% Ich möchte, dass alle resultierenden Methoden in die RDoc-Dokumentation aufgenommen werden. Gibt es eine RDoc-Direktive, die "manuell" eine...
13.08.2012, 02:27
4
Antworten

Nicht zulassen, dass Zeiger / Verweis auf const auf ein temporäres Objekt in C ++ genommen wird (kein C ++ 0X)

Ich bin mit folgendem Problem konfrontiert. Betrachten Sie die folgende Klasse: %Vor% und diese Funktion gibt ein double zurück %Vor% Wenn wir jetzt haben %Vor% bisher aber gut: %Vor% Gibt es eine Möglichkeit, Ref (wie Sie es bev...
09.11.2010, 12:36
2
Antworten

metaprogramming String # scan und globals?

Mein Ziel ist es, Methoden in der Klasse String durch andere Methoden zu ersetzen, die zusätzliche Arbeit leisten (dies ist für ein Forschungsprojekt). Dies funktioniert für viele Methoden, indem Code in der Klasse String ähnlich wie gesc...
26.10.2013, 21:38
6
Antworten

"Herkömmlichen" Typ in C # auf Nullable?

Bei einem generischen Typ T in C # frage ich mich, wie man den Typ Q erhält, was gleichbedeutend ist mit T? für nicht-nullbare T und T für bereits nullable T . Die Frage ergab sich aus echtem Code. Ich möchte den Zugriff auf...
28.09.2012, 07:46
2
Antworten

Kompilierzeit 'String' Manipulation mit Variadic Templates

Hey alle, ich versuche gerade, eine Kompilierzeitstringverschlüsselung zu schreiben (mit den Wörtern 'string' und 'encryption' ganz locker) lib. Was ich bisher habe, ist wie folgt: %Vor% Ich kann jedoch nicht herausfinden, wie man Operati...
16.08.2010, 11:42
2
Antworten

Wie kann ich diesen Code in Meta-Programmierung umwandeln, damit ich aufhören kann, ihn zu duplizieren?

Ich habe einen kleinen, aber wachsenden Rahmen für den Aufbau von .net-Systemen mit Ruby / Rake , an dem ich schon seit einiger Zeit arbeite jetzt. In dieser Codebasis habe ich Folgendes: %Vor% Das Muster, dem dieser Code folgt, wird im Fra...
17.02.2010, 01:30
2
Antworten

Erweiterung von ActiveRecord :: Base

Ich versuche, ActiveRecord einige benutzerdefinierte Methoden hinzuzufügen. Ich möchte ein *_after und *_before Bereiche für jedes date Feld eines Modells hinzufügen, damit ich etwas wie folgt machen kann: %Vor% Ich habe die hier er...
20.08.2015, 18:01