Resultados de la búsqueda a petición "constexpr"

1 la respuesta

¿Puedo obtener nombres de tipo C ++ de una manera constexpr?

Me gustaría usar el nombre de un tipo en tiempo de compilación. Por ejemplo, supongamos que he escrito: constexpr size_t my_strlen(const char* s) { const char* cp = s; while(*cp != '\0') { cp++; }; return cp - s; }y ahora quiero tener: template ...

2 la respuesta

Error de compilación de CRTP

Lo siguiente se compilará con GCC 5.2 pero no con Visual Studio 2015. template <typename Derived> struct CRTP { static constexpr int num = Derived::value + 1; }; struct A : CRTP<A> { static constexpr int value = 5; };Se queja de queA no tiene un ...

3 la respuesta

¿Por qué debería preferir static constexpr int en una clase sobre enum para las constantes integrales de nivel de clase?

Actualización de C ++ 17: static constexpr las variables son implícitamenteinline entonces no hay definición externa necesaria. Pregunta original Digamos que tengo una lista de constantes como struct Cls { static constexpr int N = 32; static ...

2 la respuesta

Inicializando un constexpr con un const, - int vs float

Me pregunto por qué el enteroii se inicia en tiempo de compilación, pero no el flotadorff aquí: int main() { const int i = 1; constexpr int ii = i; const float f = 1.0; constexpr float ff = f; }Esto es lo que sucede cuando intento compilar: > ...

2 la respuesta

Lanzar en la función constexpr

El siguiente fragmento de código se compila en clang ++ 3.7.0, pero g ++ 5.3.1 lo niega. Ambos tienen-std=c++14 opción. ¿Qué compilador es correcto? ¿Alguien sabe en qué parte del estándar se habla de esto? Gracias. #include <stdexcept> using ...

1 la respuesta

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

Dada la siguiente declaración en el espacio de nombres global: constexpr int x = x;¿Está bien formado? El borrador de la sección estándar C ++ 143.6.2 [basic.start.init] dice: Las variables con duración de almacenamiento estático (3.7.1) o ...

2 la respuesta

Por lo que puedo decir, la función a continuación no es constexpr, pero el código se compila en clang y g ++. ¿Qué me estoy perdiendo?

Obtuve este ejemplo de §5.19 / 2 en N4140: constexpr int incr(int &n) { return ++n; }Por lo que puedo decir, esto no es unconstexpr función. Pero el fragmento se compila en clang y g ++. Verejemplo en vivo ...

4 la respuesta

¿Por qué no es constante std :: array :: operator [] no constexpr?

Estoy tratando de llenar una matriz 2D en tiempo de compilación con una función determinada. Aquí está mi código: template<int H, int W> struct Table { int data[H][W]; //std::array<std::array<int, H>, W> data; // This does not work ...

2 la respuesta

¿Qué significa "envenenar una función" en C ++?

Al final de la charla de Scott Schurr"Presentandoconstexpr"en CppCon [https://youtu.be/fZjYCQ8dzTc?t=3679], pregunta "¿Hay alguna manera de envenenar una función"? Luego explica que esto se puede hacer (aunque de manera no estándar) ...

1 la respuesta

Error de compilación de Constexpr usando std :: acos con clang ++ no g ++

Quiero experimentar con la migración de un proyecto de gcc a clang ++. Admito ignorancia de mi parte, no estoy seguro de por qué el siguiente fragmento de código template <typename T> constexpr T pi{std::acos(T(-1.0))};compila ...