Tag: CONSTEXPR
Este es una versión simplificada y reproducible de mi código: type_id.h template<typename> void type_id() {} typedef void(*type_id_t)(); c_sort.h (basado en esta respuesta) template<typename array=””> constexpr void c_sort_impl(Array& array) noexcept { using size_type = typename Array::size_type; size_type gap = array.size(); bool swapped = false; while ((gap > size_type{ 1 }) or . . . Read more
Tengo una plantilla de clase y una plantilla de función que se ven así: template<typename t=””> struct IdGenerator { static unsigned int s_idCount_; template<typename u=””> static int newID() { static const unsigned int id = s_idCount_++; return id; }; }; template<typename t=””> unsigned int IdGenerator<t>::s_idCount_ = 1; Como puedes ver, . . . Read more
El código a continuación se compila: #include <iostream> int main( ) { const char* const str = “This is a constant string.”; std::cout << str << ‘\n’; } Sin embargo, este código muestra una advertencia: constexpr char* const str = “This is a constant string.”; Aquí: advertencia: ISO C++ prohíbe . . . Read more
Estoy tratando de reimplementar memchr como constexpr (1). No esperaba tener problemas ya que ya lo hice exitosamente con strchr, que es muy similar. Sin embargo, tanto clang como gcc se niegan a convertir const void* a cualquier otra cosa dentro de una función constexpr, lo que me impide acceder . . . Read more
Aquí está mi código: class agg_t1{ int x; // miembro de datos no estático privado }; class agg_t2{ agg_t2(){} // constructor proporcionado por el usuario }; constexpr void ce1(agg_t1 arg){}; // OK constexpr void ce2(agg_t2 arg){}; // ERROR: el tipo de parámetro ‘agg_t2’ no es un tipo literal Según dcl.constexpr: . . . Read more