Tag: TEMPLATE-META-PROGRAMMING
Digamos que tengo una función con la siguiente firma: c++ void foo(std::string const& a, int b, char& c) { … } ¿Cómo podría hacer algo como param_type<foo, 3=””>::type para obtener type == char? Antecedentes: Tengo un conjunto de macros/TMP que generan una estructura para convertir un objeto JSON en un . . . Read more
Quiero escribir un mecanismo de C++, donde diferentes instanciaciones de una función son llamadas si una clase dada Param es derivada de una cierta clase base. Esto funciona bastante bien con std::is_base_of y std::enable_if. Sin embargo, me gustaría tener una “versión por defecto” de esta función doStuff() que sea llamada . . . Read more
Esta pregunta es similar a https://stackoverflow.com/questions/8666735/get-return-type-of-function-in-macro-c, pero tiene 10 años y no tiene respuesta. Cualquier otra solución sería aceptada. Quiero crear una macro assert que solo regrese de la función si no se cumple la condición, como: #define ASSERT(X) if(!(X)) return {}; Esto no funciona si la función contenedora devuelve . . . Read more
Tengo una plantilla que toma como parámetro una plantilla de plantilla y un paquete de argumentos de tipo. Quiero instanciar la plantilla con los argumentos solo si las aridades coinciden. Algo como esto: // can_apply_t = ??? template<typename…> struct can_apply_t; template<><typename…> typename Template, typename… Args> struct test { using type . . . Read more
Tengo un código implementado en funciones variádicas de plantillas que utiliza características modernas de c++17. Al ser plantillas, están implementadas en los archivos .h. // Archivo .H template <typename… t=””> inline constexpr void foo(const T& …values){ // Haz cosas } ¿Hay alguna forma de crear una capa de compatibilidad que . . . Read more