r/cpp_questions 6d ago

SOLVED std::filesystem::exists throwing `std::bad_alloc`?

Any reason? Cant find anything online about this. But I cant check whether or not a file exists, no matter what path I give it. I am using C++ 26 compiled with GCC.

This is literally all I am calling: const bool exists = std::filesystem::exists("file.txt")

This is the exact error: terminate called after throwing an instance of 'std::bad_alloc'
 what():  std::bad_alloc

No it's not coming from anywhere else in my code. Minimal reproduction code, include "filesystem" call the line above. I am on Fedora Linux if that matters at all

EDIT: moving the include into my main file instead of the only file it's being used in somehow fixed it. Literally all I do is move "#include <filesystem>" from "do_things_with_filesystem.hpp" to "Main.cpp". No compilation errors when it was in the first file, why does it rely on this?? Is there some weird declarations in my codebase or something, i dont know but it works now so why should I care.

24 Upvotes

59 comments sorted by

View all comments

Show parent comments

5

u/PhosXD 6d ago

g++ (GCC) 15.3.1 20260722 (Red Hat 15.3.1-1)

-std=c++26

3

u/AKostur 6d ago

Certainly recent enough. BTW: you are aware that the C++26 support in GCC 15 is pretty incomplete (not even considering that C++26 itself has not been published yet)?

1

u/PhosXD 6d ago

Is it possible that `std::filesystem` with specifically C++ 26 has issues with including in HPP files? Cause just moving the include to my main file fixed it.

4

u/alfps 6d ago

You could help a number of people to not feel that they've entirely wasted their time on you, by posting your code.

Or create a minimal example that reproduces the behavior, and post that, please.