c++11 · iso/iec 14882:2011
Move semantics, лямбды, auto, умные указатели, потоки как часть языка — с C++11 начинается всё, что сейчас называют «современным C++». 21 фича, каждая — отдельная страница.Move semantics, lambdas, auto, smart pointers, threading as part of the language — C++11 is where everything now called "modern C++" begins. 21 features, each its own page.
Не новая семантика, а новый способ писать то же самое короче и безопаснее.Not new semantics, but a new way to write the same thing shorter and safer.
Вывод типа переменной из инициализатора — компилятор решает, что писать не нужно.Deducing a variable's type from its initializer — the compiler figures out what you don't need to write.
Получить тип выражения без его вычисления — фундамент для generic-кода и trailing return.Getting an expression's type without evaluating it — the foundation for generic code and trailing return types.
Цикл по контейнеру без итераторов вручную — синтаксический сахар над begin()/end().Looping over a container without manual iterators — syntactic sugar over begin()/end().
Типобезопасный null вместо перегруженного 0/NULL — убирает классический overload-баг.A type-safe null instead of overloaded 0/NULL — removes the classic overload bug.
Скоуп-ограниченные перечисления без неявных преобразований в int.Scoped enumerations without implicit conversion to int.
Проверка условия на этапе компиляции — ошибка до рантайма, не после.A compile-time condition check — an error before runtime, not after.
Анонимные функции с захватом окружения — конец ручных функторов для STL-алгоритмов.Anonymous functions with environment capture — the end of hand-written functors for STL algorithms.
Шаблоны с произвольным числом параметров — основа make_unique, tuple, perfect forwarding в цепочке.Templates with an arbitrary number of parameters — the foundation of make_unique, tuple, and chained perfect forwarding.
Разделяет «скопировать» и «забрать себе» на уровне типа — избавляет от лишних глубоких копий по всему языку.Separates "copy" from "take ownership" at the type level — eliminates unnecessary deep copies throughout the language.
Новая категория ссылок (T&&), различающая временные объекты от именованных переменных.A new reference category (T&&) distinguishing temporary objects from named variables.
Явная передача владения ресурсом вместо копирования — move-constructor/move-assignment.Explicitly transferring resource ownership instead of copying — move constructor/move assignment.
std::forward + universal references — передать аргумент дальше, не потеряв его lvalue/rvalue-природу.std::forward + universal references — passing an argument along without losing its lvalue/rvalue nature.
Единоличное владение с нулевым overhead — move-only, не copy-able.Exclusive ownership with zero overhead — move-only, not copyable.
Совместное владение через atomic reference counting — цена и когда она оправдана.Shared ownership via atomic reference counting — the cost, and when it's worth paying.
Невладеющее наблюдение за shared_ptr — разрыв циклических ссылок.Non-owning observation of a shared_ptr — breaking reference cycles.
Детали memory model и atomics уже частично разобраны в cpp_concurrency.md — здесь фокус на происхождении и месте в стандарте.Memory-model and atomics details are already partly covered in cpp_concurrency.md — the focus here is on origin and place within the standard.
Портируемая обёртка над нативными потоками ОС — первая стандартная многопоточность в C++.A portable wrapper over native OS threads — the first standard concurrency facility in C++.
Взаимное исключение и ожидание условия — базовые примитивы синхронизации.Mutual exclusion and condition waiting — basic synchronization primitives.
Первая формальная модель памяти в C++ — happens-before, memory_order, атомарные типы.The first formal memory model in C++ — happens-before, memory_order, atomic types.
Асинхронный результат без ручной синхронизации — предок senders/receivers из C++26.An asynchronous result without manual synchronization — the ancestor of C++26's senders/receivers.
Хэш-таблицы в стандарте — O(1) в среднем случае против O(log n) у map/set.Hash tables in the standard — average-case O(1) versus O(log n) for map/set.
Гетерогенный фиксированный набор значений — вместе с variadic templates и std::tie.A heterogeneous fixed-size set of values — alongside variadic templates and std::tie.
Типобезопасное время — duration/time_point вместо голых миллисекунд в int.Type-safe time — duration/time_point instead of bare milliseconds in an int.
порядок чтенияreading order
Разделы идут в порядке зависимости: ядро языка → лямбды/шаблоны → move semantics → умные указатели → многопоточность → библиотека. Move semantics стоит читать до smart pointers — unique_ptr держится на move-only семантике, без понимания rvalue-ссылок объяснение будет казаться магией.Sections follow a dependency order: core language → lambdas/templates → move semantics → smart pointers → concurrency → library. Move semantics is worth reading before smart pointers — unique_ptr rests on move-only semantics, and without understanding rvalue references the explanation will feel like magic.
Пересечения с существующей базой: multithreading-раздел — сверяться с cpp_concurrency.md (там подробный memory model и SPSC-паттерны), происхождение future/async и atomic<shared_ptr> — с cpp_ts_extensions.md.Overlaps with the existing knowledge base: cross-check the concurrency section against cpp_concurrency.md (which has a detailed memory model and SPSC patterns); the origin of future/async and atomic<shared_ptr> against cpp_ts_extensions.md.