C++でコード書く仕事をしているわけですが、書き始めるとC++11の機能を使いたくなってきました。とくに、auto と for 文の新しいシンタックスと、lambda。

そんなわけで使い始めましたが、ちょっとだけ填まったので二点ほど。

1. C++11 の機能を使うにはオプション指定が必要

C++11のフィーチャを使うには、clang++ 使うにしろ、g++ を使うにしろ、

-std=c++11 -stdlib=libc++

このオプションを両方を指定しないと、C++11の機能は使えませんから、要注意です。CXXにでも突っ込むのが正解のようです。

2. MacOS X では、LLVM 3.3 を入れるより XCode4.3の方が良さそう

私の理解では、C++11のためには、LLVM 3.3 を使うか、GCC 4.7 を使えば無問題だと思っていたのですが、どうも、LLVM 3.3 はOS Xでは、まだ噛み合わせが悪いところがあるようで、注意が必要です。

他のOSでLLVM3.3を使う場合は、まだ試していないですが、少なくとも、Mac OS X で Homebrew 経由で LLVM 3.3 を入れているとはまります。XCodeの最新使うのが正解のようです。Homebrew 経由で GCC 4.7.3 入れた場合は平気だった。

パッケージマネージャに、うっかりインストールされちゃうことがあるので要注意です。たとえば、doxygen のインストールでlibclang使うように設定してインストールすると、Homebrew君は親切にLLVM 3.3を入れてくれるので、気がつくとclang++がこいつを向いていたりして。おかげで二日ほど悩みました。。。

ということで、C++な人は、C++11 使いましょ。昨今、cpprefjpなどという素晴らしいサイトもあるので、助かりますね。

ちなみに、C++ ポケットリファレンス はとても便利な本で、C++11 使う人は必携というぐらいオススメですが、残念ながら、この処理系毎のオプションの話が書いてないのでした。


blog comments powered by Disqus