На самом деле, в этом случае MSVC ведет себя намного интеллектуальнее, чем GCC.
Это расширение компилятора MSVC, и стандарт C ++ явно допускает такое поведение.
C ++ Стандарт:
Раздел 1.4 / 8:
Соответствующая реализация может иметь расширения (включая дополнительные библиотечные функции), при условии, что они не изменяют поведение любой правильно сформированной программы. Внедрения необходимы для диагностики программ, использующих такие расширения, которые не соответствуют требованиям настоящего международного стандарта. Сделав это, однако, они могут компилировать и выполнять такие программы.
В этом случае MSVC надлежащим образом диагностирует проблему отсутствия постфикса и специально определяет предупреждения,
Предупреждение компилятора (уровень 1) C4620
Предупреждение компилятора (уровень 1) C4621
Кроме того, он предоставляет вам возможность отключить определенные расширения MSVC с помощью / Za . В целом, я бы сказал, что это один из случаев, когда MSVC ведет себя лучше, чем GCC.