Как получить новый стандарт C++20?
пишу на c++ в visual studio 2017, совершенно недавно понял, что у меня очень старый стандарт c++98, но как так? Вроде бы пишу в visual studio 2017, так где же c++17 или c++20? Как мне перейти на новый стандарт, НЕ обновляя свою IDE до 2019 года? Можете рассказать об этом по подробнее.
#include <iostream>
int main()
{
std::cout << __cplusplus;
return 0;
}
Собираю этот код и на выводе получаю это:
Ответы (2 шт):
В Visual Studio 2017 достаточно указать в командной строке требуемый стандарт (до 17) - запустите cl /?, и увидите, в частности,
-ЯЗЫК-
/std:<c++14|c++17|c++latest> стандартная версия C++
c++14 - ISO/IEC 14882:2014 (по умолчанию)
c++17 - ISO/IEC 14882:2017
c++latest - последний черновик стандарта (набор возможностей может быть изменен)
Этот ключ может быть указан в самой операционной системе в переменной среды CL, например,
set CL=/std:c++latest
Соответствующие настройки доступны и в IDE. Меню Проект->Свойства->Свойства конфигурации->С/С++->Язык->Стандарт языка С++
Насколько я помню, в первых выпусках VC++ 2017 по умолчанию использовался C++11, но могу и ошибаться. В последней версии по умолчанию используется С++14, но можно переключиться на С++17.
Что до C++20 - боюсь, в VC++ 2017 - никак... Здесь вы можете ознакомиться с тем, что из стандарта и в какой версии VC++ было реализовано.
Вы, вероятно, неправы относительно текущей версии стандарта - этот макрос по умолчанию рапортует о наличии 1997 версии ради обеспечения совместимости
Because lots of existing code appears to depend on the value of this macro matching "199711L", the compiler does not change the value of the macro unless you explicitly opt-in by using the /Zc:_
А чтобы проверить версию c использованием этого макроса, нужно включить опцию компилятора /Zc
When the /Zc:__cplusplus option is enabled, the value reported by the __cplusplus macro depends on the /std version switch setting.