Wprowadzenie do standardu C++11

Historia standaryzacji C++

  • 1998 - pierwszy standard ISO C++

  • 2003 - TC1 („Technical Corrigendum 1”) opublikowane jako („C++03”). Poprawki błędów (bug fixes) dla C++98

  • 2005 - opublikowany „Technical Report 1”

  • 2011 - C++0x ratyfikowany jako C++11

  • 2014 - C++14 - minor revision

  • 2017 - C++17 - umiarkowana modyfikacja standardu

  • 2020 - C++20 - duża modyfikacja standardu

W trakcie pisania standardu C++11 priorytetem była kompatybilność z wcześniejszymi wersjami standardu.

Nowe słowa kluczowe w C++11

  • alignas, alignof, char16_t, char32_t, constexpr, decltype, noexcept, nullptr, static_assert, thread_local

Elementy uznane w C++11 za przestarzałe (deprecated)

  • Funkcje wiążące bind1st, bind2nd, itp.

  • Specyfikacja rzucanych wyjątków przez funkcje

  • Klasa auto_ptr<>

  • Specyfikator register

Ostrzeżenie

Kod C++11 może być binarnie niekompatybilny z kodem C++03

Stałe definiujące wersje

Stała preprocesora __cplusplus definiuje, która wersja standardu jest dostępna w trakcie kompilacji. Wartości, jakie może przyjmować, to:

dla C++98 i C++03

199711L

dla C++11

201103L

dla C++14

201402L

Wsparcie dla C++11 w kompilatorze GCC

  • Wybrane elementy C++11 są wspierane od wersji 4.3

  • Podstawowe funkcjonalności - wersja 4.6

  • Należy użyć opcji kompilacji:

    • -std=c++11 - od wersji 4.7

  • Szczegóły: http:://gcc.gnu.org/projects/cxx0x.html

Wsparcie dla C++14