1

MSVC2010 のラムダに問題があります。

コンパイルに成功しました:

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で動作しますか?

4

1 に答える 1

0

おそらく MSVC のバグです (エラー メッセージは非常に疑わしいようです)。GCC 4.7 で動作します。

于 2012-04-20T11:17:41.780 に答える