Tag: constexpr

constexpr ist ein modifier eingeführt, die in C++11, die informiert den compiler, dass der Wert einer Funktion oder variable bekannt ist oder berechnet werden kann zur compile-Zeit. Als solche, es kann verwendet werden als Konstante in Orten, wo es sonst nicht sein könnte.

Lookup-Tabelle mit constexpr

Anzahl der Antworten 3 Antworten
Ich bin auf der Suche zum erstellen einer lookup-Tabelle der Koordinaten, so etwas wie: int a[n][2] = {{0,1},{2,3}, ... } Für einen bestimmten n, angelegt werden zur compile-Zeit. Ich suchte in constexpr, aber scheint wie eine Funktion

Warum constexpr statisches Element (vom Typ der Klasse) verlangen eine definition?

Anzahl der Antworten 1 Antworten
==> Siehe das code-snippet und Zusammenstellung auf coliru. Ich habe eine LiteralType Klasse Füllung constexpr Anforderungen: struct MyString { constexpr MyString(char const* p, int s) : ptr(p), sz(s) {} constexpr char const* data() const { return ptr;

C++11 constexpr Funktion übergebene argument in das template-argument

Anzahl der Antworten 4 Antworten
Dies funktionierte vor einigen Wochen: template <typename T, T t> T tfunc() { return t + 10; } template <typename T> constexpr T func(T t) { return tfunc<T, t>(); } int main() { std::cout << func(10) <<

C++11 constexpr Funktion parameter übergeben

Anzahl der Antworten 3 Antworten
Betrachten Sie den folgenden code: static constexpr int make_const(const int i){ return i; } void t1(const int i) { constexpr int ii = make_const(i); //error occurs here (i is not a constant expression) std::cout<<ii; } int main()

Was ist Erlaubt in einer constexpr-Funktion?

Anzahl der Antworten 1 Antworten
constexpr - Funktionen sind nicht enthalten soll: Definition einer Variablen von nicht-wörtliche Art Aber in diese Antwort ein lambda-Ausdruck definiert ist, in einem: https://stackoverflow.com/a/41616651/2642059 template <typename T> constexpr auto make_div(const T quot, const T rem) { return

Bedeutet die Angabe constexpr Konstruktor auf automatisch alle Objekte daraus erstellt werden constexpr?

Anzahl der Antworten 3 Antworten
Hier ist mein code: class test{ public: constexpr test(){ } constexpr int operator+(const test& rhs){ return 1; } }; int main(){ test t; //constexpr word isn't necessary constexpr int b = t+test(); //works at compile time! int

enum vs constexpr für die tatsächliche statische Konstanten innerhalb von Klassen

Anzahl der Antworten 6 Antworten
Lassen Sie mich beginnen mit der Feststellung, meine Absicht. In den alten (C++) Tage, wir hätten einen code wie: class C { public: enum {SOME_VALUE=27}; }; Dann könnten wir SOME_VALUE überall in unserem code einen compile-Zeit-Konstante und

Kann std::array verwendet werden, in einer constexpr-Klasse?

Anzahl der Antworten 2 Antworten
Ich bin derzeit am erstellen einer Klasse mit einem constexpr Konstruktor und ich Frage mich, ob ich verwenden kann, ein std::array zum speichern der Daten dieser Klasse. Hat der standard explizit angeben, dass eine std::array hat eine

Whyever **nicht** deklarieren Sie eine Funktion `constexpr`?

Anzahl der Antworten 3 Antworten
Jede Funktion, die aus einer return-Anweisung nur deklariert werden könnte constexpr und somit erlauben werden zur Kompilierzeit ausgewertet, wenn alle Argumente sind constexpr und nur constexpr Funktionen werden aufgerufen, in Ihren Körper. Gibt es einen Grund, nicht

Wann ist ein constexpr Funktion zur Kompilierzeit ausgewertet?

Anzahl der Antworten 2 Antworten
Da es möglich ist, dass eine Funktion deklariert als constexpr aufgerufen werden können, während der Laufzeit, unter welche Kriterien muss der compiler entscheiden, ob, um zu berechnen, es zur compile-Zeit oder zur Laufzeit? template<typename base_t, typename expo_t>

static constexpr variable vs-Funktion

Anzahl der Antworten 1 Antworten
Gibt es einen Unterschied zwischen Deklaration von Gleitkomma-Konstante als static constexpr variable und eine Funktion wie im Beispiel unten, oder ist es nur eine Frage des Stils? class MY_PI { public: static constexpr float MY_PI_VAR = 3.14f;

Warum ist C++11 constexpr so restriktiv?

Anzahl der Antworten 5 Antworten
Wie Sie wahrscheinlich wissen, ist C++11 bietet die constexpr Stichwort. C++11 eingeführt, das Schlüsselwort constexpr, die es dem Anwender erlaubt garantieren, dass eine Funktion oder ein Objekt Konstruktor ist eine compile-Zeit konstant. [...] Dies ermöglicht es dem

Warum kann keine nicht-statischen Daten-member werden constexpr?

Anzahl der Antworten 1 Antworten
Dies ist gültig-code: struct S { constexpr S(int x, int y): xVal(x), yVal(y) {} constexpr S(int x): xVal(x) {} constexpr S() {} const int xVal { 0 }; const int yVal { 0 }; }; Aber hier

Wie undefiniert sind, __builtin_ctz(0) oder __builtin_clz(0)?

Anzahl der Antworten 2 Antworten
Hintergrund Für eine lange Zeit, gcc zur Verfügung gestellt hat eine Reihe von builtin-bit-twiddling-Funktionen, insbesondere die Anzahl der Leerzeichen am Anfang und Ende 0-bits (auch für long unsigned und long long unsigned, die Suffixe l und ll):

Constexpr vs Makros

Anzahl der Antworten 3 Antworten
Wo sollte ich lieber mit Makros und wo sollte ich lieber constexpr? Sind Sie nicht im Grunde das gleiche? #define MAX_HEIGHT 720 vs constexpr unsigned int max_height = 720; AFAIK constexpr bietet mehr Sicherheit geben Ganz einfach:

Unterschied zwischen " constexpr` und `const`

Anzahl der Antworten 7 Antworten
Was ist der Unterschied zwischen constexpr und const? Wann kann ich die Verwendung nur einer von Ihnen? Wann kann ich beide verwenden und wie soll ich mich entscheiden? constexpr erzeugt einen compile-Zeit-Konstante; const bedeutet einfach, dass der

Undefined reference to static constexpr char[]

Anzahl der Antworten 6 Antworten
Ich will eine static const char array in meiner Klasse. GCC beschwert und sagte mir, ich sollte verwenden constexpr, obwohl jetzt ist es mir zu sagen, es ist eine Undefinierte Referenz. Wenn ich den array nicht-Mitglied dann

Constexpr-Zeiger-Wert

Anzahl der Antworten 2 Antworten
Ich versuche zu erklären, constexpr-Zeiger initialisiert, um einen Konstanten integer-Wert, aber das Geräusch ist Folierung alle meine versuche: Versuch 1: constexpr int* x = reinterpret_cast<int*>(0xFF); test.cpp:1:20: note: reinterpret_cast is not allowed in a constant expression Versuch 2:

const double-Ausdruck in C++

Anzahl der Antworten 3 Antworten
in der Englische Wikipedia-Seite über C++11, können wir Lesen, dass: Vor C++11, die Werte von Variablen, die verwendet werden könnten, in Konstante Ausdrücke nur, wenn die Variablen deklariert sind const, eine Initialisierung, die ein konstanter Ausdruck sein,

Ist constexpr unterstützt mit lambda-Funktionen / Ausdrücke?

Anzahl der Antworten 4 Antworten
struct Test { static const int value = () -> int { return 0; } (); }; Mit gcc-4.6 bekomme ich so etwas wie error: function needs to be constexpr. Ich habe versucht, mehrere Kombinationen von putting

kann variable definition von non-literal type-in constexpr-Funktion Körper c++14?

Anzahl der Antworten 1 Antworten
Ich denke, dass in C++14 mehr restrictives entfernt von constexpr. Aber nach N3797 7.1.5 3-punct: Die definition eines contexpr Funktion shal erfüllen die folgenden Einschränkungen: es darf nicht sein, virtuelle der Rückgabetyp ist ein literal-Typ; jedem Ihrer

constexpr-Funktion Parameter als template-Argumente

Anzahl der Antworten 4 Antworten
Ich bin Herumspielen mit einigen Spielzeug-code mit c++11, um herauszufinden, ein wenig mehr darüber, wie die Dinge funktionieren. Während dieser kam ich über das folgende Problem, das vereinfacht sich auf: template <int x, int y> class add

Concat-zwei `const char` string-Literale

Anzahl der Antworten 5 Antworten
Ist es möglich, concat zwei string-Literale mit einem constexpr? Oder anders gesagt, kann man beseitigen-Makros in code wie: #define nl(str) str "\n" int main() { std::cout << nl("usage: foo") nl("print a message") ; return 0; } Update:

constexpr nicht kompilieren in VC2013

Anzahl der Antworten 4 Antworten
Diese constexpr code nicht kompiliert in Visual Studio 2013 version 12.0.21005.1 REL Gibt es eine neuere Visual Studio-compiler, der mit constexpr? #include <iostream> constexpr int factorial(int n) { return n <= 1 ? 1 : (n *

Warum ist dies nicht ein konstanter Ausdruck?

Anzahl der Antworten 4 Antworten
In diesem trivialen Beispiel test2 nicht kompiliert werden, obwohl test1 gelingt, und ich sehe nicht, warum das der Fall ist. Wenn arr[i] geeignet ist für einen Rückgabewert aus einer Funktion markiert constexpr kann, warum kann es nicht

Tut constexpr bedeuten inline?

Anzahl der Antworten 1 Antworten
Betrachten Sie die folgenden inline-Funktion : //Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv) { return f(std::atoi(argv[1])); } und die constexpr

Füllen Sie Ein Array Mit Constexpr zur Compile-Zeit

Anzahl der Antworten 4 Antworten
Möchte ich zum Auffüllen der ein array von enum mit constexpr. Der Inhalt des Arrays folgt einem bestimmten Muster. Ich habe eine enum-Trennung-ASCII-Zeichensatz in vier Kategorien. enum Type { Alphabet, Number, Symbol, Other, }; constexpr Type table[128]

conexpr initialisiert statisches Element mit statischer Funktion

Anzahl der Antworten 4 Antworten
Anforderungen Möchte ich ein constexpr Wert (z.B. eine compile-Zeit-Konstante) berechnet aus einer constexpr Funktion. Und ich möchte diese beiden bezieht sich auf den namespace einer Klasse, d.h. eine statische Methode und eine statische member der Klasse. Ersten

constexpr vs. statische const: Welche bevorzugen?

Anzahl der Antworten 2 Antworten
Für definieren compile-Zeit-Konstanten der integralen Typen wie die folgende (bei Funktion und Klasse scope), die syntax ist am besten? static const int kMagic = 64; //(1) constexpr int kMagic = 64; //(2) (1) funktioniert auch für C++98/03-Compiler,

Warum erklären ** nicht ** eine Funktion als "consxpr"?

Anzahl der Antworten 3 Antworten
Jede Funktion, die aus einer return-Anweisung nur deklariert werden könnte constexpr und somit erlauben werden zur Kompilierzeit ausgewertet, wenn alle Argumente sind constexpr und nur constexpr Funktionen werden aufgerufen, in Ihren Körper. Gibt es einen Grund, nicht

Ist statischer consxpr variabel sinnvoll?

Anzahl der Antworten 1 Antworten
Wenn ich eine variable innerhalb einer Funktion (etwa ein großes array), macht es Sinn es zu erklären, sowohl static und constexpr? constexpr garantiert, dass das array erstellt wird zur compile-Zeit, so wäre die static nutzlos sein? void

const vs conexpr auf Variablen

Anzahl der Antworten 4 Antworten
Gibt es einen Unterschied zwischen den folgenden Definitionen? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; Wenn nicht, welcher Stil bevorzugt wird in C++11? InformationsquelleAutor der Frage fredoverflow | 2012-11-12

Undefinierter Verweis auf statisches constexpr char []

Anzahl der Antworten 4 Antworten
Ich will eine static const char array in meiner Klasse. GCC beschwert und sagte mir, ich sollte verwenden constexprobwohl jetzt ist es mir zu sagen, es ist eine Undefinierte Referenz. Wenn ich den array nicht-Mitglied dann kompiliert.

Wie überprüfe ich, ob zwei Typen bei Compiletime gleich sind (Bonuspunkte, wenn es mit Boost stark typedef funktioniert)

Anzahl der Antworten 1 Antworten
Ich Frage mich, ob es möglich ist, zu überprüfen, ob die 2 Typen sind die gleichen, die zur Kompilierzeit. Was ich kam mit ist(idk wenn es funktioniert, weil es fühlt sich hackish-und IDK-standard, gut so IDK was

Erstellen Sie ein N-Element-consExpr-Array in C ++ 11

Anzahl der Antworten 7 Antworten
Hallo, ich Lerne C++11, Frage ich mich, wie man eine constexpr 0 bis n-array, zum Beispiel: n = 5; int array = {0 ... n}; also array kann {0, 1, 2, 3, 4, 5} InformationsquelleAutor der Frage

Berechnen der Länge einer C-Zeichenfolge zum Zeitpunkt der Kompilierung. Ist das wirklich ein Constexpr?

Anzahl der Antworten 6 Antworten
Ich versuche zu berechnen, die Länge von einem string-literal zur compile-Zeit. Zu tun, so verwende ich folgenden code: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; }

C ++ 11 - static_assert in der constexpr-Funktion?

Anzahl der Antworten 2 Antworten
Wie man richtig machen eine static_assert innerhalb einer constexpr Funktion? Zum Beispiel: constexpr int do_something(int x) { static_assert(x > 0, "x must be > 0"); return x + 5; } Dies ist kein gültiges C++11 code, weil

Wird constexpr mit Lambda-Funktionen / -Ausdrücken unterstützt?

Anzahl der Antworten 4 Antworten
struct Test { static const int value = () -> int { return 0; } (); }; Mit gcc-4.6 bekomme ich so etwas wie error: function needs to be constexpr. Ich habe versucht, mehrere Kombinationen von putting

C ++ Linker Fehler mit Klasse statisch consExpr

Anzahl der Antworten 4 Antworten
Ich bin kompilieren Sie das folgende einfache Programm mit g++-4.6.1 --std=c++0x: #include <algorithm> struct S { static constexpr int X = 10; }; int main() { return std::min(S::X, 0); }; Bekomme ich die folgende linker-Fehler: /tmp/ccBj7UBt.o: In

Verwenden von "constexpr", um Zeichenfolgenliteral für Vorlagenparameter zu verwenden

Anzahl der Antworten 2 Antworten
Ich geschrieben habe etwas code zu werfen const char* zu int mithilfe constexpr und somit kann ich mit einem const char* als ein template-argument. Hier ist der code: #include <iostream> class conststr { public: template<std::size_t N> constexpr

Wann sollten Sie in C ++ 11 constexpr verwenden?

Anzahl der Antworten 13 Antworten
Scheint es mir, dass mit einer "Funktion, die immer wieder 5" bricht oder die Verdünnung der Bedeutung von "eine Funktion aufrufen". Es muss einen Grund oder eine Notwendigkeit für diese Fähigkeit oder es wäre nicht in C++11.

Ist es möglich, std :: string in einem conexpr zu verwenden?

Anzahl der Antworten 3 Antworten
Mit C++11, Ubuntu 14.04, GCC-Standard-toolchain. Dieser code nicht: constexpr std::string constString = "constString"; Fehler: der Typ 'const string {aka const std::basic_string}' von constexpr variable 'constString' ist nicht wörtlich gemeint... weil... 'std::basic_string' hat einen nicht-trivialen Destruktor Ist es