2016年2月10日 (水曜日)

17:26:15 # Life ディレクトリの再帰的な走査をC++からしたいとおもったんだけどどの標準関数でできるのかなと調べてみた。 nftw(コールバックにパラメータを渡すことができないのでグローバル変数が必要となる)、 fts-D_FILE_OFFSET_BITS=64 でコンパイルするとエラーになる) と微妙なAPIが用意されていてC++にもっとよいものなかったかなと調べたらC++17をめがけて std::filesystem::recursive_directory_iteratorなるものが提案されているらしい。 しかし手元のコンパイラではちゃんと実装されていないっぽかったのでそれを提案している人が以前実装していた boost::filesystem::recursive_directory_iteratorを使ってみた。 Range Forに突っこんでみようとしたらRange ForにはIterator自体は突っ込めなくて begin(), end() のあるものしか突っ込めないのに気づいたけど、その問題は 提案しているものでは解決しているがBoostの版は対応していないようだった。 プロポーザルは2012年のn3399 が最新なのかな。

Junichi Uekawa