bitset

std::bitset を使ってみました。


「bitset<8>」 のように < > の中に型以外のものを突っ込めることを初めて知りました。これを使うとめくるめくメタプログラミングへの道が開けるのですね。
自分は型システムについては Java の方が馴染みがあるぶん、かなりカルチャーショックでした。

こんな風に型を値に関してパラメタライズするような言語って、あんまり無いですよね。Template Haskell?

ソースを覗いてみると、

 template<size_t _Nw>

となっていて、テンプレート引数の宣言時に書く typename とか class って、ちゃんと意味があったんだなぁ、と思った。

ところで、UVaのコンパイラは bitset の to_string() メソッドなんて無いとか言いやがるんですが…。

追記

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200608/06080070.txt

std::string s = b.to_string< char,std::char_traits<char>,std::allocator<char> >
();

としてみると、今度は char_traits が宣言されていないと言われた。