clang++のboost対応状況 part.4

そろそろコードフリーズらしいから,clang++でBoost本のサンプルがどれだけコンパイルか出来るかのテストを約3週間ぶりにやってみた.
例によって,g++ 4.4.3との比較(行頭に-がclang++でコンパイル失敗)

 BoostBook2nd/1-String/format1
 BoostBook2nd/1-String/format2
 BoostBook2nd/1-String/format3
 BoostBook2nd/1-String/format4
 BoostBook2nd/1-String/lexcast1
 BoostBook2nd/1-String/lexcast2
 BoostBook2nd/1-String/regex1
 BoostBook2nd/1-String/regex2
 BoostBook2nd/1-String/regex3
 BoostBook2nd/1-String/regex4
+BoostBook2nd/1-String/regex5
 BoostBook2nd/1-String/string_algo1
 BoostBook2nd/1-String/string_algo2
 BoostBook2nd/1-String/string_algo3
 BoostBook2nd/1-String/string_algo4
 BoostBook2nd/1-String/string_algo5
 BoostBook2nd/1-String/tokenizer1
 BoostBook2nd/1-String/tokenizer2
 BoostBook2nd/1-String/tokenizer3
-BoostBook2nd/1-String/xpressive1
-BoostBook2nd/1-String/xpressive2
-BoostBook2nd/1-String/xpressive3
-BoostBook2nd/1-String/xpressive4
-BoostBook2nd/1-String/xpressive6
-BoostBook2nd/1-String/xpressive7
-BoostBook2nd/1-String/xpressive8
-BoostBook2nd/1-String/xpressive9
-BoostBook2nd/10-Misc/graph1
 BoostBook2nd/10-Misc/param
 BoostBook2nd/10-Misc/po
 BoostBook2nd/10-Misc/signals1
 BoostBook2nd/10-Misc/signals2
 BoostBook2nd/10-Misc/ublas1
-BoostBook2nd/10-Misc/wave
 BoostBook2nd/2-SmartP/shared_ptr1
 BoostBook2nd/2-SmartP/weak_ptr1
 BoostBook2nd/3-System/filesystem1
 BoostBook2nd/3-System/fsls
 BoostBook2nd/3-System/fsmv
 BoostBook2nd/3-System/gregorian1
 BoostBook2nd/3-System/gregorian_calender
-BoostBook2nd/3-System/posix_time1
-BoostBook2nd/3-System/posix_time2
 BoostBook2nd/3-System/thread1
 BoostBook2nd/4-IO/add_server
 BoostBook2nd/4-IO/addmul_server2
 BoostBook2nd/4-IO/addmul_server3
 BoostBook2nd/4-IO/asio1
 BoostBook2nd/4-IO/asio2
 BoostBook2nd/4-IO/asio3
 BoostBook2nd/4-IO/gzview
 BoostBook2nd/4-IO/iostreams1
 BoostBook2nd/4-IO/iostreams2
 BoostBook2nd/4-IO/iostreams3
 BoostBook2nd/4-IO/iostreams4
 BoostBook2nd/4-IO/serialization1
 BoostBook2nd/4-IO/serialization2
 BoostBook2nd/4-IO/serialization4
 BoostBook2nd/5-Math/crc1
 BoostBook2nd/5-Math/crcchk
 BoostBook2nd/5-Math/interval1
 BoostBook2nd/5-Math/interval2
 BoostBook2nd/5-Math/quaternion1
 BoostBook2nd/5-Math/quaternion2
 BoostBook2nd/5-Math/random1
 BoostBook2nd/5-Math/random2
 BoostBook2nd/5-Math/random3
 BoostBook2nd/5-Math/rational1
 BoostBook2nd/6-Data/any1
 BoostBook2nd/6-Data/any2
 BoostBook2nd/6-Data/array1
 BoostBook2nd/6-Data/array2
 BoostBook2nd/6-Data/dynbitset1
 BoostBook2nd/6-Data/dynbitset2
 BoostBook2nd/6-Data/ite_adapt1
 BoostBook2nd/6-Data/ite_facade1
 BoostBook2nd/6-Data/multi_array1
 BoostBook2nd/6-Data/multi_array2
 BoostBook2nd/6-Data/multi_array3
 BoostBook2nd/6-Data/optional1
 BoostBook2nd/6-Data/range1
 BoostBook2nd/6-Data/range2
 BoostBook2nd/6-Data/tuple1
 BoostBook2nd/6-Data/tuple2
 BoostBook2nd/6-Data/variant1
 BoostBook2nd/6-Data/variant2
 BoostBook2nd/6-Data/variant3
 BoostBook2nd/6-Data/variant4
 BoostBook2nd/7-Func/bind1
 BoostBook2nd/7-Func/bind2
 BoostBook2nd/7-Func/bind3
 BoostBook2nd/7-Func/bind4
-BoostBook2nd/7-Func/function1
-BoostBook2nd/7-Func/lambda1
 BoostBook2nd/7-Func/spirit1
 BoostBook2nd/7-Func/spirit10
 BoostBook2nd/7-Func/spirit2
 BoostBook2nd/7-Func/spirit3
 BoostBook2nd/7-Func/spirit5
 BoostBook2nd/7-Func/spirit6
-BoostBook2nd/7-Func/spirit7
 BoostBook2nd/7-Func/spirit8
 BoostBook2nd/7-Func/spirit9
 BoostBook2nd/8-Meta/fusion2
 BoostBook2nd/8-Meta/fusion3
 BoostBook2nd/8-Meta/fusion4
 BoostBook2nd/8-Meta/mpl1
 BoostBook2nd/8-Meta/mpl2
 BoostBook2nd/8-Meta/mpl3
 BoostBook2nd/8-Meta/mpl4-5
 BoostBook2nd/8-Meta/mplaf
 BoostBook2nd/8-Meta/pp3
 BoostBook2nd/8-Meta/pp4
 BoostBook2nd/8-Meta/type_traits1
 BoostBook2nd/9-Util/assignment1
 BoostBook2nd/9-Util/foreach1
 BoostBook2nd/9-Util/ios_saver1
 BoostBook2nd/9-Util/next1
 BoostBook2nd/9-Util/operators1
 BoostBook2nd/9-Util/ref1
 BoostBook2nd/9-Util/timer1

2月15日実施分との差分は

+BoostBook2nd/10-Misc/ublas1
+BoostBook2nd/5-Math/random2
+BoostBook2nd/5-Math/random3
+BoostBook2nd/6-Data/optional1
+BoostBook2nd/7-Func/spirit1
+BoostBook2nd/7-Func/spirit10
+BoostBook2nd/7-Func/spirit2
+BoostBook2nd/7-Func/spirit3
+BoostBook2nd/7-Func/spirit5
+BoostBook2nd/7-Func/spirit6
+BoostBook2nd/7-Func/spirit8
+BoostBook2nd/7-Func/spirit9

となったが,注目すべきはboost::ublasやboost::spirit::classicといった代表的なExpression Templateを活用したライブラリがコンパイル可能になったこと.すげー.ちなみに,letsboost::spiritを試してみた限りだと,boost::spirit::qiは通らないようだ.
順調に準拠度は上がっているけど,結構基本的なところがまだ未実装だったりするから,実用にはまだ辛いかな.例えば,現時点では複合代入演算子の値をlvalueとして使えない,っていうのがある.テストケースとしては,

int& f(int& n)
{   
    return n += 1;
}

test.cpp:3:9: error: cannot compile this l-value expression yet
        return n += 1;
               ^~~~~~
1 diagnostic generated.

と言われて通らない.boost::lambdaのサンプルコードも+=使ってる部分を消せばコンパイルは通るんだよなあ.セグフォっちゃうけど.