この前買い込んだ本そっちのけで以下らへんを読み漁って Unicode 周りのおべんきょ.
- http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+10646%2D1%2D2000
- http://www.amazon.co.jp/exec/obidos/ASIN/0321185781
- http://www.amazon.co.jp/exec/obidos/ASIN/0201700522
- http://www.amazon.co.jp/exec/obidos/ASIN/0201183951
- http://icu.sourceforge.net/userguide/
- http://icu.sourceforge.net/apiref/icu4c/
- http://thread.gmane.org/gmane.comp.lib.boost.devel/111930
- http://thread.gmane.org/gmane.comp.lib.boost.devel/120124
まー,とりあえず現在の C++ 標準にあるような固定長志向のエンコードの取り扱いではどう頑張っても限界やね,ということは分かった.やっぱ range of ranges 的扱いじゃないと.Boost の議論読んだ限りでは,今すぐに Unicode をサポートする(十分に C++ 志向な)ライブラリの登場を期待するのは無理っぽい.かと言って ICU あたりは設計が C に寄り過ぎている(C もサポートするので仕方ないんだけれど)ので,あれをそのまんま使う気にもなれない.結論として,今は ICU の thin wrapper をちまちま書いて/使って我慢するしかないかのー.
まー,でも string クラスに非 const イテレータを提供したのはぶっちゃけ失敗だったとか,Andrei Alexandrescu によるランダムアクセス可能な UTF-16 文字列実装のアイデアとか,どういう class invariants をコンパイル時に保証してどういう class invariants を実行に保証するべきか?とか色々面白い話が読めたのでよしとしますか.