Articles of constexpr

Funciones Constexpr Math

Entonces noté desde esta página que ninguna de las funciones matemáticas en c ++ 11 parece hacer uso de constexpr, mientras que creo que todas podrían serlo. Entonces eso me deja con dos preguntas, una es por qué eligieron no hacer las funciones constegradas. Dos para una función como sqrt . Probablemente podría escribir mi […]

Valor del puntero Constexpr

Intento declarar un puntero constexpr inicializado a un valor entero constante, pero clang frustra todos mis bashs: Intento 1: constexpr int* x = reinterpret_cast(0xFF); test.cpp:1:20: note: reinterpret_cast is not allowed in a constant expression Intento 2: constexpr int* x = (int*)0xFF; test.cpp:1:20: note: cast which performs the conversions of a reinterpret_cast is not allowed in […]

miembro de constestación estática del mismo tipo que la clase que se define

Me gustaría que una clase C tenga un miembro constestatico estático de tipo C. ¿Es esto posible en C ++ 11? Intento 1: struct Foo { constexpr Foo() {} static constexpr Foo f = Foo(); }; constexpr Foo Foo::f; g ++ 4.7.0 dice: ‘uso no válido del tipo incompleto’ en referencia a la llamada Foo() […]

constexpr no comstackndo en VC2013

Este código constexpr no está comstackdo en Visual Studio 2013 versión 12.0.21005.1 REL ¿Existe un comstackdor de Visual Studio más nuevo que funcione con constexpr? #include constexpr int factorial(int n) { return n <= 1 ? 1 : (n * factorial(n – 1)); } int main(void) { const int fact_three = factorial(3); std::cout << fact_three […]

Llene una matriz utilizando Constexpr en tiempo de comstackción

Me gustaría llenar una matriz de enumeración usando constexpr. El contenido de la matriz sigue un cierto patrón. Tengo una enumeración que separa el conjunto de caracteres ASCII en cuatro categorías. enum Type { Alphabet, Number, Symbol, Other, }; constexpr Type table[128] = /* blah blah */; Me gustaría tener una matriz de 128 Type […]

constexpr inicializando miembro estático usando función estática

Requisitos Quiero un valor constexpr (es decir, una constante en tiempo de comstackción) calculado a partir de una función constexpr . Y quiero que ambos scopen el espacio de nombre de una clase, es decir, un método estático y un miembro estático de la clase. Primer bash Primero escribí esto la (a mí) manera obvia: […]

¿Por qué necesitamos marcar funciones como constexpr?

C ++ 11 permite que las funciones declaradas con el especificador constexpr se usen en expresiones constantes tales como argumentos de plantilla. Existen requisitos estrictos sobre lo que se permite que sea constexpr ; esencialmente, tal función encapsula solo una subexpresión y nada más. (Editar: esto está relajado en C ++ 14 pero la pregunta […]

Autoinicialización de una variable de constexto estática, ¿está bien formada?

Dada la siguiente statement en el espacio de nombres global: constexpr int x = x; ¿Está bien formado? El borrador de la sección estándar de C ++ 14 3.6.2 [basic.start.init] dice: Las variables con duración de almacenamiento estático (3.7.1) o duración de almacenamiento de subprocesos (3.7.2) se inicializarán en cero (8.5) antes de que tenga […]

C ++ 11: cálculo del tiempo de comstackción de la matriz

Supongamos que tengo alguna función constexpr f: constexpr int f(int x) { … } Y tengo alguna const int N conocida en tiempo de comstackción: Ya sea #define N …; o const int N = …; según sea necesario por tu respuesta. Quiero tener una matriz int X: int X[N] = { f(0), f(1), f(2), […]

C ++ concat dos literales de cadenas `const char`

¿Es posible combinar dos cadenas literales usando un constexpr ? O reformulado puede uno eliminar macros en código como: #define nl(str) str “\n” int main() { std::cout << nl("usage: foo") nl("print a message") ; return 0; } Actualización : no hay nada de malo con el uso de “\n” , sin embargo, me gustaría saber […]