Скорее всего, потому что старые версии g ++ (и я полагаю, что это означает другие компиляторы) не были полностью совместимы с c ++ и имели больше ошибок, чем текущая версия. Как вы сказали, это работает в более поздней версии, поэтому, скорее всего, исправлено.
EDIT
кстати, вы пытались изменить настройки компилятора? Разные уровни оптимизации могут иметь разные ошибки.