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]

Reply via email to