Да, стандарт должен допускать это в соответствии с документом n3582.Вот пример из статьи.
Разрешение объявления неопределяющих функций с типом автоматического возврата не является строго необходимым, но это полезно для стилей кодирования, которые предпочитают определять функции-члены вне класса:
struct A {
auto f(); // forward declaration
};
auto A::f() { return 42; }
и если мы допускаем это в этой ситуации, то это должно быть справедливо и в других ситуациях.Разрешение этого также является более ортогональным выбором;в общем, я считаю, что если объединение двух функций может сработать, то это должно сработать.
Согласно комментарию @bamboon, "Вычет возвращаемого типа поддерживается только начиная с gcc 4.9". так что это объясняет, почему у вас его нет.