split_path/make_path

変数展開で使うパスの分解/連結関数を実装しました。
今日の成果物
bjamのPATHNAME構造体と微妙に仕様が違っています。

struct path_components
{
    std::string grist;
    std::string root;   // 末尾のデリミタを含む
    std::string dir;    // 末尾のデリミタを含む
    std::string base;
    std::string suffix;
    std::string member;
};

というのも、bjamのpath_build()は連結時にデリミタが必要になると、末尾の次の文字を使う仕様になっていて、バグの温床になりそうだったからです。
なので、パスの分解時はデリミタまで保存しておいて、連結時に必要に応じて取り除くようにしています。