为什么不能在绑定构造函数时使用boost :: bind推断返回类型<>函子?

时间:2012-06-13 21:50:25

标签: c++ boost constructor lambda bind

...尽管库提供的constructor<>仿函数适配器定义了sig<>模板?

struct Porc
{
    Porc(int x) {}
};

boost::bind
(
    boost::lambda::constructor<Porc>(),
    _1
)(1);

错误:'struct boost :: lambda :: constructor'

中没有名为'result_type'的类型

我要做的是创建一个带有int并创建&amp;的仿函数。使用该int返回Porc对象。 注意:如果我明确指定了仿函数的返回类型(Porc),如下所示,它可以工作:

boost::bind<Porc>
(
    boost::lambda::constructor<Porc>(),
    _1
)(1);

我对lambda表达式相对较新,但我认为/希望我掌握了基础知识。它说here in the documentation 通常,BLL不能推断出任意函数对象的返回类型。但是,有两种方法可以为特定的函数对象类提供BLL此功能。 [...] result_type typedef和[...] sig模板。由于提供了constructor<>库,当然他们声明了sig<>模板。

0 个答案:

没有答案