У меня есть этот тип в заголовке MyType.hpp
:
struct MyType
{
template<typename T>
void operator(T t)
{
auto lamdba = [t](auto i){ t.someCall(i); };
someMethod(lamdba);
}
template<typename L>
void someMethod(L);
};
Итак, someMethod
вызывается с помощью лямбды generi c, которая принимает параметр generi c. Можно ли как-то обеспечить реализацию в MyType.cpp
для someMethod
? Это не работает:
template<typename L>
void MyType::someMethod(L lambda)
{
lambda(42);
lambda("42");
// etc...
}
Поскольку частичная специализация не разрешена (только полная специализация для шаблонов функций), есть ли другой способ «передать» лямбда-файл заголовка в файл реализации MyType.cpp
? Если передача невозможна, возможно, существует способ динамического хранения этой лямбды в MyType.hpp
и доступа к ней в MyType.cpp
?