Самое простое решение для объединения сегментов для создания нового path
- это просто std::accumulate()
.
Для вашего конкретного случая использования я бы сделал что-то вроде этого:
std::filesystem::path strip_prefix(std::filesystem::path p)
{
if(p.empty()) return p;
return std::accumulate(std::next(p.begin()), p.end(),
std::filesystem::path{}, std::divides{});
}
А почему нет конструктора (или, может быть, свободной функции) для этого?Я не знаю.Это похоже на необходимость, возникающую при работе с путями, но комитет, как правило, неохотно добавляет удобные функции к стандартным классам, если тот же результат может быть достигнут с помощью вызова стандартного алгоритма.