2012-02-11 4 views
1

私は単純なラムダを内部にasyncと呼んでいます。しかし、それはsystem_errorを与えます。何も返されないlambdasでasyncを使用するには?

#include<future> 
#include<iostream> 

int main() 
{ 
    auto a = std::async([]() 
    { 
     std::cout << 42 << std::endl; 
    }); 
    a.get(); 
    return 0; 
} 

http://ideone.com/GIyGI

コンパイラ:C++ 0xの(GCC-4.5.1)

任意のアイデア?

+0

これはちょうどGCC 4.5のバグのようです。あなたのコードは有効なAFAICTであり、clang(トランク)で動作します。 – bames53

+0

GCC 4.6.1でも試しました。同じエラー。 -pthreadでコンパイルすると、うまく動作します。 – balki

+0

@ bames53 clang trunkはコードガンダムをコードすることができますか? –

答えて

2

ほとんどの場合、-pthreadオプションでコンパイルする必要があります。

+0

はい。 -pthreadオプションで正常に動作しますが、なぜこのようになりますか?これはどこかに書かれていますか? – balki

+0

「一種」と記載されています。たとえば、http://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/manual/manual/using_concurrency.htmlを参照してください。これは、(これはドキュメントなので)非常にプラットフォーム依存性が高いあまりよく書かれていない。 – wjl

関連する問題