https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100765
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- GNU++98 version: #define vec __attribute__((vector_size(4))) template <typename T> vec T f(vec T); vec int ff(vec int t) { return f(t); } ----- CUT ---- And one which rejects a different way: #define vec __attribute__((vector_size(4))) template <typename T> vec T f(T a, vec T); vec int ff(int a, vec int t) { return f(a, t); }