https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88979

--- Comment #2 from 19Sebastian95 at gmx dot de ---
I'm sorry if I'm misinterpreting this, but the program I wrote does compile
with gcc 9.0, as the "error" part is commented out, so I'll just write what to
do to get the descriped error: 

If my constructor is:

A(typename T::type a) : mA{a} {} 

it is working, but if I remove the typename it'll give me The "error: expected
')' before 'a'" error. (As far as I know it should detect that it is only a
missing typename, so for versions before c++20 it should be "error: need
'typename' [...]" and for c++20 it shouldn't be an error).

So right now this won't compile:
A(T::type a) : mA{a} {} 

But if I'd define the constructor out-of-line it won't give me an error:

template<typename T>
A<T>::A(T::type a) : mA{a} {} 

As GCC is detecting that there can only be a type at this position, which it
doesn't with the "header-only"-version.

I hope this will help.

Reply via email to