...尽管库提供的constructor<>
仿函数适配器定义了sig<>
模板?
struct Porc
{
Porc(int x) {}
};
boost::bind
(
boost::lambda::constructor<Porc>(),
_1
)(1);
错误:“struct boost::lambda::constructor”中没有名为“result_type”的类型</p>
我要做的是创建一个仿函数,它接受一个 int 并使用该 int 创建并返回一个 Porc 对象。注意:如果我明确指定函子的返回类型(即 Porc),如下所示,它可以工作:
boost::bind<Porc>
(
boost::lambda::constructor<Porc>(),
_1
)(1);
我对 lambda 表达式比较陌生,但我认为/希望我掌握了基础知识。它在文档中说通常,BLL 无法推断出任意函数对象的返回类型。但是,有两种方法可以为某个函数对象类赋予 BLL 这种能力。[...] result_type typedef 和 [...] sig 模板。由于constructor<>
提供的是库,因此他们当然声明了一个sig<>
模板。