【发布时间】:2014-04-30 09:21:21
【问题描述】:
我正在编写一个简单的通用池。模板类在构造函数中接受一个参数,该参数是一个工厂函数,用于根据需要实例化池中的对象。
template<typename T>
struct Foo {
std::function <T*()> factory_;
Foo(std::function<T*()> factory): factory_(factory) {}
};
这编译得很好,但我想使用 lambda 为构造函数创建一个默认参数:
Foo(std::function<T*()> factory = [](){return new T();} ): factory_(factory) {}
这不会编译 - 它说 T 是未知的。有没有办法让 lambda 表达式知道类模板参数?我尝试使用typedef,但无济于事。
【问题讨论】:
-
it works perfectly for me,这可能表示vs2013中的一个错误...
-
@Massa 我想那是一个错误。谢谢。
标签: c++ templates c++11 lambda visual-studio-2013