https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62063
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Ferenc Géczi from comment #0) > Created attachment 33276 [details] > Source code for reproducing the reported issue > > g++ disregards that template specialization might happen in a different > compilation unit. How is the compiler supposed to know that? If you don't declare a specialization before it would be needed the compiler will not use it, and the program has undefined behaviour. > For comparison, clang++ works as expected with -O0, without the > -fnon-callexceptions. > Although it has the same the behavior with higher optimization levels. That should tell you your expectation is wrong.