Каждый раз, когда я использую один из новых классов c++ 11, предлагает chrono.h и компилирует его с помощью GCC, он предупреждает меня, что функции c++ 11 все еще экспериментальны и должны быть активированы с использованием специального флага.
Его конец 2014 года на момент написания этого сообщения, как получилось, что, по крайней мере, через 3,5 года GCC по-прежнему отмечает c++ 11 как "экспериментальный", ведь после всех этих лет некоторые функции, которые c++ 11 предлагает нам, еще не реализованы?
Если это так, то почему?
Код:
#include <chrono>
#include <thread>
int main()
{
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
return 0;
}
строка компилятора: g++ Source.cpp -o test.exe
Версия GCC: g++ (x86_64-posix-seh-rev0, построена проектом MinGW-W64) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc.
GCC выскакивает: C: /Program Files/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev0/mingw64/x86_64-w64- mingw32/include/c++/bits/c++0x_warning.h:32:2: error: #error This file requires G compiler and library support for the ISO c++ 2011 standard. This support is curr ently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 comp iler options.
C: /Program Files/mingw-w64/x86_64-4.9.2-posix-seh-rt_v3-rev0/mingw64/x86_64-w64- mingw32/include/c++/bits/c++0x_warning.h:32:2: error: #error This file requires G compiler and library support for the ISO c++ 2011 standard. This support is curr ently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 comp iler options.
Как только я добавлю. '-std = С++ 11' в параметры компилятора. Я больше не получаю сообщение об ошибке/предупреждении, но я уже знал об этом. Я был озадачен тем, почему он дал мне предупреждение, не добавляя его. Должен ли текущий std на GCC быть С++ 11 уже? Почему это все еще не так?
Системы программного обеспечения и сборки там используют значения по умолчанию и ожидают, что они останутся достаточно стабильными. GCC не просто обновляет настройки по умолчанию каждый раз, когда доступны новые стандарты или функции.
Если вам нужна конкретная версия стандарта, вы должны указать ее явно.