https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86299
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to zhonghao from comment #0) > The code seems to be invalid, but g++ accept the code. In fact, a previous > version of clang++ also accepts it, but was fixed in > https://bugs.llvm.org/show_bug.cgi?id=7385 No, it looks like Clang used to crash, not accept it. It's not helpful to misrepresent the problem. > > The latest clang++ produces the following error message: > error: no member named 'value' in 'has_xxx0<int>::has_xxx0_introspect<int>' > static const int value = has_xxx0_introspect<int>::value; > ~~~~~~~~~~~~~~~~~~~~~~~~~~^ Every version for a decade produces that error. G++ also gives an error if you try to use the value member, which is all the standard requires. Errors in uninstantiated templates are not required to be diagnosed.