我在标题中有这种类型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
使用接受泛型参数的泛型 lambda 调用。是否有可能在MyType.cpp
for中提供一个实现someMethod
?这不起作用:
template<typename L>
void MyType::someMethod(L lambda)
{
lambda(42);
lambda("42");
// etc...
}
由于不允许部分特化(仅对函数模板进行完全特化),有没有其他方法可以将头文件的 lambda “传递”到实现文件MyType.cpp
?如果无法通过,是否存在一种动态存储此 lambdaMyType.hpp
并在其中访问它的方法MyType.cpp
?