He estado aprendiendo plantillas y especializaciones de plantillas. Quiero ser capaz de sumar dos parámetros de plantilla juntos. Pude hacer esto con tipos básicos, pero ¿se podría hacer también con funciones utilizando una función lambda y una especialización de clase? El siguiente código no se compilará: template<class r=””> class Adder . . . Read more
Si tienes un puntero a una función miembro de la siguiente manera: struct Foo { void func() {} }; void(Foo::*funcPtr)() = &Foo::func; ¿Existe alguna manera de obtener el tipo de la función, eliminando Foo::? Por ejemplo: void(Foo::*)() -> void(*)() int(Foo::*)(int, double, float) -> int(*)(int, double, float) Entiendes la idea. El . . . Read more
Considere el siguiente código: #include <functional> #include <iostream> struct S1 { S1(const std::function<void()>& func) : func{func} {} std::function<void()> func; }; struct S2 { template<typename f=””> S2(F&& func) : func{std::forward<f>(func)} {} std::function<void()> func; }; int main() { S1 s1{[]{ std::cout << “Se llamó a la función S1\n”; }}; S2 s2{[]{ std::cout . . . Read more
[Actualización] Razón de esta pregunta: Hay muchas lambdas existentes definidas como [](const ChildType1& child), todas en un gran registro. Queremos registrar nuevas lambdas como [](const ChildType2& child) en el mismo registro. Si definimos el envoltorio de función usando Parent, para las muchas lambdas existentes necesitamos cambiarlas a [](const Parent& someone) . . . Read more