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 ?