Является ли С++ 11 (С++ 0x) полным набором С++ 03?

C++ считается (почти) супер-набором C; но все же есть определенные вещи, которые работают в C, а не в C++.

Есть ли какой-либо объект/объект, который является действительным C++03, но не работает в C++11?

Ответ 1

Есть ли какая-либо функция/объект, который действительный С++ 03, но не работает в С++ 11

Существует несколько несовместимостей:

  • export template удален (не устарел, действительно удален)
  • вы больше не можете использовать auto как спецификатор хранилища
  • есть новые зарезервированные слова: alignof, char16_t, char32_t, constexpr, decltype, noexcept, nullptr, static_assert и thread_local

также для будущих версий:

  • std::auto_ptr устарел
  • характеристики броска устарели

Возможно, мне не хватает других, но если ваш код использует их, вам придется исправить это.

Почти все возможности С++ 2003 по-прежнему одинаковы или более точно указаны для реализаций компилятора в С++ 2011.

Ответ 2

Нет, это не строгий суперсет. extern template и auto, чтобы назвать несколько отличий.