boost::filesystemとワイド文字

boost::filesystemでまたも引っかかる点が。端的に言ってしまえばboost::filesystemではワイド文字を扱えない、ってことなんだけどその説明がFAQに以下のように載っていたので引用。

Wide-character names would provide an illusion of portability where portability does not in fact exist. Behavior would be completely different on operating systems (Windows, for example) that support wide-character names, than on systems which don't (POSIX). Providing functionality that appears to provide portability but in fact delivers only implementation-defined behavior is highly undesirable. Programs would not even be portable between library implementations on the same operating system, let alone portable to different operating systems.

Boost Filesystem FAQ

要はワイド文字の扱いは処理系依存、しかも同じ処理系でも実装によって扱われ方がまた異なる。だから怖くて使えない、ってことらしいんだけど。illusion of portabilityねぇ…。漢字圏の人たちからすればかなり切実な問題なんだけど。そういえばid3libも便利そうだと思って調べてみたらUnicode関係が腐っててダメだった思い出が(今どうなんだろう?)。

で、とりあえず直面したのは0x5c問題だけなんだけど、どうすっかなー。考えられる対応としては

  1. ワイド文字/ダメ文字を使わないようにする。
  2. boost::filesystemが日本語に対応するまで使わない。
  3. Windows系のみで使うと決め打ちしてこれを試す
  4. 自前でパッチ当てる

くらいか?パッチ以外はどうやっても縛りが出てくるなぁ…。パッチも非処理系依存のコードを一人で書くのは無理だろうしなぁ。

つーわけでまた放置。