- Introduction
- References
- C++11
- 1. Language features
❱
- 1.1. Move semantics
- 1.2. Rvalue references
- 1.3. Forwarding references
- 1.4. Variadic templates
- 1.5. Initializer lists
- 1.6. Static assertions
- 1.7. auto
- 1.8. Lambda expressions
- 1.9. decltype
- 1.10. Type aliases
- 1.11. nullptr
- 1.12. Strongly-typed enums
- 1.13. Attributes
- 1.14. constexpr
- 1.15. Delegating constructors
- 1.16. User-defined literals
- 1.17. Explicit virtual overrides
- 1.18. Final specifier
- 1.19. Default functions
- 1.20. Deleted functions
- 1.21. Range-based for loops
- 1.22. Special member functions for move semantics
- 1.23. Converting constructors
- 1.24. Explicit conversion functions
- 1.25. Inline namespaces
- 1.26. Non-static data member initializers
- 1.27. Right angle brackets
- 1.28. Ref-qualified member functions
- 1.29. Trailing return types
- 1.30. noexcept
- 1.31. char32_t and char16_t
- 1.32. Raw string literals
- 2. Library features
❱
- 2.1. std::move
- 2.2. std::forward
- 2.3. std::thread
- 2.4. std::to_string
- 2.5. Type traits
- 2.6. Smart pointers
- 2.7. std::chrono
- 2.8. Tuples
- 2.9. std::tie
- 2.10. std::array
- 2.11. Unordered containers
- 2.12. std::make_shared
- 2.13. std::ref
- 2.14. std::async
- 2.15. std::begin/std::end
- C++14
- 3. Language features
❱
- 3.1. Binary literals
- 3.2. Generic lambda expressions
- 3.3. Lambda capture initializers
- 3.4. Return type deduction
- 3.5. decltype(auto)
- 3.6. Relaxing constraints on constexpr functions
- 3.7. Variable templates
- 3.8. [[deprecated]] attribute
- 4. Library features
❱
- 4.1. User-defined literals for standard library types
- 4.2. Compile-time integer sequences
- 4.3. std::make_unique
- C++17
- 5. Language features
❱
- 5.1. Template argument deduction for class templates
- 5.2. Non-type template parameters with auto
- 5.3. Folding expressions
- 5.4. New rules for auto deduction from braced-init-list
- 5.5. constexpr lambda
- 5.6. Lambda capture this by value
- 5.7. inline variables
- 5.8. Nested namespaces
- 5.9. Structured bindings
- 5.10. Selection statements with initializer
- 5.11. constexpr if
- 5.12. UTF-8 character literals
- 5.13. Direct-list-initialization of enums
- 5.14. [[fallthrough]], [[nodiscard]], [[maybe_unused]] attributes
- 5.15. __has_include
- 5.16. Class template argument deduction
- 6. Library features
❱
- 6.1. std::variant
- 6.2. std::optional
- 6.3. std::any
- 6.4. std::string_view
- 6.5. std::invoke
- 6.6. std::apply
- 6.7. std::filesystem
- 6.8. std::byte
- 6.9. Splicing for maps and sets
- 6.10. Parallel algorithms
- 6.11. std::sample
- 6.12. std::clamp
- 6.13. std::reduce
- 6.14. Prefix sum algorithms
- 6.15. std::gcd and std::lcm
- 6.16. std::not_fn
- 6.17. String conversion to/from numbers
- 6.18. Rounding functions for chrono durations and timepoints
- C++20
- 7. Language features
❱
- 7.1. Coroutines
- 7.2. Concepts
- 7.3. requires clause
- 7.4. Three-way comparison (spaceship operator)
- 7.5. Designated initializers
- 7.6. Template syntax for lambdas
- 7.7. Range-based for loop with initializer
- 7.8. [[likely]] and [[unlikely]] attributes
- 7.9. Deprecate implicit capture of this
- 7.10. Class types in non-type template parameters
- 7.11. constexpr virtual functions
- 7.12. explicit(bool)
- 7.13. consteval (immediate functions)
- 7.14. using enum
- 7.15. Lambda capture of parameter pack
- 7.16. char8_t
- 7.17. constinit
- 7.18. __VA_OPT__
- 8. Library features
❱
- 8.1. Concepts library
- 8.2. std::format
- 8.3. Synchronized buffered outputstream
- 8.4. std::span
- 8.5. Bit operations
- 8.6. Math constants
- 8.7. std::is_constant_evaluated
- 8.8. std::make_shared array support
- 8.9. starts_with and ends_with on strings
- 8.10. contains for associative containers
- 8.11. std::bit_cast
- 8.12. std::midpoint
- 8.13. std::to_array
- 8.14. std::bind_front
- 8.15. std::erase/std::erase_if (uniform container erasure)
- 8.16. Three-way comparison helpers (spaceship operator helpers)
- 8.17. std::lexicographical_compare_three_way
- 8.18. std::views
- 8.19. std::ranges
- C++23
- 9. Language features
❱
- 9.1. if consteval
- 9.2. Deducing this
- 9.3. Multidimensional [] operator
- 9.4. [[assume]] attribute
- 9.5. size_t literal suffix
- 9.6. #elifdef/#elifndef
- 9.7. static operator()
- 9.8. auto(x) (decay copy)
- 9.9. Lambda without parentheses
- 9.10. #warning directive
- 9.11. static_assert(false) in templates
- 9.12. import std;
- 10. Library features
❱
- 10.1. std::print/std::println
- 10.2. std::expected
- 10.3. std::flat_map
- 10.4. std::mdspan
- 10.5. std::ranges::contains
- 10.6. std::ranges::fold_left
- 10.7. std::byteswap
- 10.8. std::to_underlying
- 10.9. std::unreachable
- 10.10. Monadic operations for std::optional
- 10.11. std::stacktrace
- 10.12. std::views::zip
- 10.13. std::views::chunk
- 10.14. std::views::enumerate
- 10.15. std::move_only_function
- 10.16. std::string::contains
- 10.17. constexpr std::unique_ptr
- 10.18. Formatting ranges and tuples