std::filesystem::path::remove_filename
Min standard notice:
Removes a single generic-format filename component (as returned by filename) from the given generic-format path.
# Declarations
path& remove_filename();
(since C++17)
# Return value
*this
# Example
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
fs::path p;
std::cout << std::boolalpha
<< (p = "foo/bar").remove_filename() << '\t' << p.has_filename() << '\n'
<< (p = "foo/").remove_filename() << '\t' << p.has_filename() << '\n'
<< (p = "/foo").remove_filename() << '\t' << p.has_filename() << '\n'
<< (p = "/").remove_filename() << '\t' << p.has_filename() << '\n'
<< (p = "").remove_filename() << '\t' << p.has_filename() << '\n';
}