Tag: METAPROGRAMMING
El código es como sigue: void f1(){ /* … */ } void f2(){ /* … */ } int main() { const int n=2; USE(f, n)(); return 0; } Espero que pueda llamar a f2(). Si solo lo definimos como: define PASTE(a,b) a##b define USE(a,b) PASTE(a,b) llamará a fn(). Por lo . . . 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
Considere el siguiente código: struct Base_string { char data[1 << 5]; }; template<typename base=””> struct Derived: Base { }; Derived(char const*) -> Derived<base_string>; template<derived> struct S { }; S<{“Test”}> s; // Error La última línea, en la cual se instancia S, no compila. Yo esperaba que funcionara, porque [temp.arg.nontype#1] establece . . . Read more
¿Es posible en Rust crear nuevas palabras clave que funcionen como alias de otra palabra clave? Por ejemplo, crear la palabra clave “fun” que apunte a “fn” y utilizarla como si fuera “fn”: // de alguna manera asignamos “fun” como alias de “fn” fun main() { println!(“¡Hola, mundo!”); } En . . . Read more
Soy nuevo en Ruby y estoy tratando de entender cómo funciona la declaración de clase a continuación desde la gema Sequel. class Enumeration < Sequel::Model(DB[:enumerations]); end Tras una rápida investigación del código de la gema Sequel, me parece que el método de módulo Sequel::Model devuelve una instancia de clase con . . . Read more