Предположим, что мы имеем такую структуру:Кто здесь, GCC или MSVC?
namespace some_namespace::types {
using foo_t = int;
}
namespace some_namespace::classes {
class bar {
public:
auto do_stuff() -> types::foo_t;
};
}
using namespace some_namespace::classes;
auto bar::do_stuff() -> types::foo_t {
return 1;
}
Этот код компилируется счастливо в GCC6.
С другой стороны, VS15 с включенным переключателем /std:c++latest
не распознает тип возврата do_stuff
. Он возвращает C2653.
Теперь, что я нахожу весьма подозрительным, что это фиксируется путем изменения во второй половине этого:
using namespace some_namespace;
auto classes::bar::do_stuff() -> types::foo_t {
return 1;
}
, который в моих глазах должны быть равны. Я ошибаюсь, думая, что это ошибка MSVC? Что говорит об этом стандарт?
Непосредственно GCC и MSVC внедряют новый стандарт с разной скоростью и с разными приоритетами. –
Я думаю, что GCC просто становится более снисходительным. – Arunmu
Поддержка MSVC C++ 17: https://msdn.microsoft.com/en-us/library/hh567368.aspx –