Cómo gestionar diferentes tipos de funciones como contenedores
Estoy tratando de gestionar una lista de funciones a través de una plantilla en C++.
template<typename t,="" typename...="" args="">
std::map<std::wstring,></std::wstring,><t(args...)>> mFuncs;
El código anterior no es una oración correcta, pero al igual que en el concepto del código anterior, quiero gestionar varios tipos de funciones como una lista.
void RegistrarFunciones()
{
mFuncs.emplace(L"Func1", [&]() -> bool { ... });
mFuncs.emplace(L"Func2", [&](int a, std::string b) -> int { ... });
mFuncs.emplace(L"Func3", [&](std::tuple<int, int="">& a) { ... });
...
...
...
mFuncs.emplace(L"Func", [&](args...) -> auto { ... });
}
template<typename... targs="">
inline auto LlamarFuncion(const wchar_t* pKey, TArgs&&... pArgs)
{
...
...
return mFuncs[std::forward<targs>(pArgs)...](pKey);
}
¿Cómo puedo implementar el concepto anterior?</typename…></int,></t(args…)>
davy.ai
Para administrar diversos tipos de funciones como una lista utilizando plantillas de C++, puedes usar el contenedor std::map para almacenar una correspondencia entre los nombres de las funciones (como claves) y las funciones correspondientes (como valores). Para admitir diferentes firmas de funciones, puedes usar plantillas para definir los tipos de argumentos y de retorno de las funciones.
Aquí tienes un ejemplo de implementación:
“`c++
#include
#include