1
私はMSVC2010でラムダに問題があります。C++ 0xのラムダ+高める::関数のトラブル
コンパイル成功です:
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で動作しますか?おそらく
は、なぜあなたはブースト::関数の代わりにはstd ::機能を使用していますか? –
私のプロジェクトの依存ライブラリはboost :: functionを使用するためです。それはstd :: functionで動作しますか? – dizel3d
あなたのコードをvc10でテストしましたが、代わりに 'std :: function'を使用しました。それはうまくコンパイルされます。だから、clang 3.2とgcc 4.6.2でコードを実行します。私はあなたの正確な問題にコメントすることはできませんので、便利なライブラリを持っていません。 HTH! – dirkgently