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

--- Comment #2 from mauro russo <ing.russomauro at gmail dot com> ---
I see your point, despite I consider your modified example a bit different,
because in the original example, other compilers still accept f<B> even on the
intantiation..

However, I suppose you are implicitly mentioning the following text from
[expr.prim.req.general]-p5 :


"... If the substitution of template arguments into a requirement would always
result in a substitution failure, the program is ill-formed; no diagnostic
required. ..."

which should mean that any compiler may choose whether to diagnostic or not.

Same spirit in [temp.constr.normal]-p(1.4):
"... If any such substitution results in an invalid type or expression,
the program is ill-formed; no diagnostic is required. ..."

and in [temp.res]-p6:
"The validity of a templated entity may be checked prior to any instantiation.
...
The program is ill-formed, no diagnostic required, if:
....<then, the list of interesting cases>"

which is specifically related to your modified example.


As out-of-scope topic,
may you please check for residual question-point (a) in PR 118398 ?

Reply via email to