файловая система c ++: std :: mismatch segfault - PullRequest
0 голосов
/ 30 января 2019

Я использую два std::filesystem::path -экземпляра, к которым я хочу применить std :: mismatch.Один из этих двух экземпляров пути является подкаталогом другого, и я хотел использовать std :: mismatch, чтобы получить итератор для позиции, где оба отличаются.

например

void filesystem_mismatch() {
    const std::filesystem::path path{"/a/b/file"};
    const std::filesystem::path prefix{"/a/b"};
    auto tmp = std::mismatch(path.begin(), path.end(), prefix.begin());
    std::cout << *(tmp.first) << std::endl;
}

ЕслиЯ выполняю эту функцию, все работает, но если я делаю следующее:

void filesystem_mismatch2() {
    const std::filesystem::path path{"/a/b/c/file"};
    const std::filesystem::path prefix{"/a/b/c"};
    auto tmp = std::mismatch(path.begin(), path.end(), prefix.begin());
    std::cout << *(tmp.first) << std::endl;
}

Я получаю segfault при разыменовании итератора tmp.first.

Что я делаю здесь неправильно?Я использую g ++ 8.2.0 и линковку с libstdc ++. So.6.25

Кстати, я создал рабочий пример в coliru, но там ошибка не возникает.

https://coliru.stacked -crooked.com / а / deb0d007041db603

...