Preguntas etiquetadas con constexpr

constexpr es un modificador introducido en C ++ 11, que informa al compilador que el valor de una función o variable es conocido o puede calcularse en tiempo de compilación. Como tal, puede usarse como una constante en lugares donde de otra manera no podría ser.


14
¿Cuándo debe usar la capacidad constexpr en C ++ 11?
Me parece que tener una "función que siempre devuelve 5" es romper o diluir el significado de "llamar a una función". Debe haber una razón, o una necesidad de esta capacidad o no estaría en C ++ 11. ¿Por qué está ahí? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const …
337 c++  c++11  constexpr 




4
¿Es posible usar std :: string en un constexpr?
Usando C ++ 11, Ubuntu 14.04, cadena de herramientas predeterminada de GCC . Este código falla: constexpr std::string constString = "constString"; error: el tipo 'const string {aka const std :: basic_string}' de la variable constexpr 'constString' no es literal ... porque ... 'std :: basic_string' tiene un destructor no trivial …

2
¿Constexpr implica en línea?
Considere la siguiente función en línea: // 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])); } y la versión equivalente constexpr: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int …

2
¿Qué significa "envenenar una función" en C ++?
Al final de la charla de Scott Schurr "Introducing constexpr" en CppCon , pregunta "¿Hay alguna manera de envenenar una función"? Luego explica que esto se puede hacer (aunque de una manera no estándar) mediante: Poner un throwen una constexprfunción Declarando un no resuelto extern const char* Haciendo referencia a …
96 c++  constexpr 


3
Constexpr vs macros
¿Dónde debería preferir usar macros y dónde debería preferir constexpr ? ¿No son básicamente iguales? #define MAX_HEIGHT 720 vs constexpr unsigned int max_height = 720;
92 c++  c++11  macros  constexpr 

3
¿Cómo puedo obtener la profundidad de un std :: vector multidimensional en tiempo de compilación?
Tengo una función que toma una std::vectordimensión multidimensional y requiere que se pase la profundidad (o el número de dimensiones) como parámetro de plantilla. En lugar de codificar este valor, me gustaría escribir una constexprfunción que tome std::vectory devuelva la profundidad como unsigned integervalor. Por ejemplo: std::vector<std::vector<std::vector<int>>> v = { …



1
std :: pair <auto, auto> tipo de retorno
Estaba jugando con autoadentro std::pair. En el siguiente código, fse supone que la función devuelve una std::pairde los tipos que dependen de un parámetro de plantilla. Un ejemplo de trabajo: EJEMPLO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints …


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.