On 6 Nov, Branko Čibej wrote: > On 05.11.2019 20:20, Peter Kovacs wrote: >> I am not sure why, but if you use gcc++98 std it compiles. Maybe it >> optimizes the code since it might be dead code. > > That would be a very, very strange way to go about things. To figure out > something is dead code, you have to at *least* parse it first, and the > syntax error is pretty glaring. It's not impossible that the function is > never called and hence previous (IMO, buggy) versions of GCC never got > to generate the template function.
It's not just gcc, clang also is happy, at least in gnu++98 mode. I do remember seeing this problem before, which was probably after clang switched its default to a newer C++ standard and before I switched the FreeBSD port to always build in gnu++98 mode. My suspicion is that the source is getting tokenized, but since the method is defined in a header and will get inlined where it gets used, it is being treated a lot like the body of a macro and the deeper analysis of the code is getting deferred until the method gets called somewhere. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
