Boost::Filesystemを使用して Linux のディレクトリをトラバースしています。
パスを 1 つ前のディレクトリに再定義する必要があるたびに、次のようなことを行います。
auto p = boost::filesystem::current_path();
p /= "../";
問題は、「p」を出力すると、「../」がまだ付けられたままのパスが表示されることです。ディレクトリに戻ることを決定するたびに、これを評価するにはどうすればよいですか。パスを毎回長くするのではなく、ディレクトリに戻ってパスを短くしたいと思います。
これらの関数は参照によってパスを取得するため、これらの関数の1つがそれを行う可能性があると思いましたが、
boost::filesystem::absolute(...)
boost::filesystem::canonical(...)
それらを呼び出して「p」を再出力した後でも、結果には「../」が表示されます。
path& make_preferred()
どちらも機能しません。