【发布时间】:2015-12-19 17:11:10
【问题描述】:
这是我要实现的目标的一个简单示例。甚至可以将 lambda 传递给模板函数吗?
头文件
class my_impl {
public:
template<typename F> void do_something(F && f);
};
CPP 文件
// .cpp file
template<typename F> my_impl::do_something(F && f)
{
// ... implementation
}
template void my_impl::do_something<std::string &&>(std::string &&); // OK
template void my_impl::do_something<???>(???); // what goes here for lambda?
// used like this
my_impl impl;
impl.do_something( "123" );
impl.do_something( []() {
...
} );
【问题讨论】:
-
Why can templates only be implemented in the header file?你已经可以用了,你要找的是如何显式实例化这个模板。
-
您的示例代码中根本不需要
// OK和// what goes here for lambda行。删除它们并编译您的代码。请更清楚为什么你认为你需要它们。 -
@Yakk 注意这些在 .cpp 文件中。
-
您是否尝试复制粘贴上面的示例代码,删除这两行并进行编译?同样,你仍然不需要这些行。我知道存在“附近”问题,您可能需要这些行,但发布实际存在问题的实际代码。在提交之前,将您的代码带回编译器并确保它仍然具有您想要的属性。伪代码在这里没用。
-
@Ragnar:你想为 lambda 写特化?!