C ++ 0x lambda + boost :: function麻烦

时间:2012-04-20 11:02:28

标签: c++ visual-c++ c++11

我在MSVC2010中遇到lambdas问题。

成功编译:

auto f1 = []() { };
boost::function<void()> a = f1;

但它带来了错误C2440:

auto f2 = []()
{
    auto f3 = []() { };
    boost::function<void()> b = f3;
};

错误C2440:

'initializing' : cannot convert from 'int' to 'boost::function<Signature>'
    with
    [
        Signature=void (void)
    ]
    No constructor could take the source type, or constructor overload resolution was ambiguous

为什么呢?它在GCC4.6中有效吗?

1 个答案:

答案 0 :(得分:0)

可能是MSVC中的一个错误(错误消息似乎非常可疑)。它适用于GCC 4.7。