https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77815
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- In that Core issue, the type of *p is a reference. In comment 1 the type of t is not a reference, it's just T, so it should work. Clang and EDG accept it.