https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86177 --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- That's how C++ works. Each translation unit is compiled separately. It's your job to prevent such errors.