サンプルコードを実行してみました。
しかし、予期せぬことが起こりました。
libc++ と一緒に使用される boost.thread について既知の問題があるのだろうか?
オプションを指定して、または指定せずにコンパイルされたプログラム-std=c++11
は正常に動作します。
しかし、-stdlib=libc++
またはでコンパイルすると、-std=c++11 -stdlib=libc++
出力は次のようになりました。
in main
in thread
bash: line 1: 37501 Segmentation fault: 11 ./a.out
コンパイラ:
Apple LLVM バージョン 4.2 (clang-425.0.28) (LLVM 3.2svn ベース)
ターゲット: x86_64-apple-darwin12.3.0
スレッド モデル: posix
OS: Mac OS X 10.8.3
サンプル コードは非常に単純です。
#include "stdio.h"
#include <boost/thread/thread.hpp>
class callable
{
public:
void operator()()
{
printf("in thread\n");
}
};
int main()
{
boost::thread t = boost::thread(callable());
printf("in main\n");
t.join();
return 0;
}