According to the standard, 8.4.1, a declarator for a function includes the trailing-return-type, and a class function definition contains “declarator virt-specifier-seqopt“. The second one, virt-specifier-seq, is one of final or override, so those come after the trailing return type. (I.e. Clang gets it right.)