43 template <std::convertible_to<T> U>
47 [[nodiscard]]
bool exists(std::string_view path)
const {
48 return impl_.exists(std::string{path});
51 [[nodiscard]]
bool is_file(std::string_view path)
const {
52 return impl_.is_file(std::string{path});
55 [[nodiscard]]
bool is_directory(std::string_view path)
const {
56 return impl_.is_directory(std::string{path});
59 static std::unique_ptr<std::iostream> open(
60 [[maybe_unused]] std::string_view path, [[maybe_unused]] std::ios_base::openmode mode) {
62 U8(
"This CMRC file is read-only and cannot be opened as std::iostream.")};
65 [[nodiscard]] std::unique_ptr<std::istream> open_read(
66 std::string_view path, std::ios_base::openmode mode)
const {
67 auto file = impl_.open(std::string{path});
69 return std::make_unique<ispanstream>(std::span{file.begin(), file.end()}, mode);
72 static std::unique_ptr<std::ostream> open_write(
73 [[maybe_unused]] std::string_view path, [[maybe_unused]] std::ios_base::openmode mode) {
75 U8(
"This CMRC file is read-only and cannot be opened as std::ostream.")};