/cpp_kaffeprat

Primary LanguageHTMLMIT LicenseMIT

cpp_kaffeprat

C++ Core Guidelines

https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

presentasjoner

status

using namespace std;

C++11

  • (1) nullptr
  • (1) auto
  • (1) to_string
  • (1) tie, tuple
  • (1) array
  • (1) range-based for
  • (1) unique_ptr, make_unique
  • (1) shared_ptr, make_shared
  • (2) non-static data member initializers
  • (2) move semantics: move, forward, rvalue references og move constructors/-assignment
  • (2) default and deleted functions
  • (3) enum class ("strongly typed enums")
  • (3) using (i stedet for typedef) (alias og alias templates)
  • (3) lambda-funksjoner
  • (4) override og final
  • (5) std::mutex, std::recursive_mutex osv.
  • (5) std::lock, std::lock_guard
  • (5) std::atomic
  • (5) std::thread
  • (5) std::future
  • (6) inline-namespace
  • (6) user-defined literals
  • (6) initializer lists
  • (6) delegating constructors
  • (6) std::chrono
  • (7) attributes
  • (7) decltype
  • (7) type traits (eks. std::is_integral::value)
  • (7) variadic templates
  • (8) constexpr

C++14

  • (8) constexpr med færre begrensninger
  • (8) user-defined literals for standard library types
  • (8) binary literals
  • (8) lambda capture initializers
  • (8) generic lambda expressions
  • (8) return type deduction
  • (8) decltype(auto)
  • (8) std::integer_sequence
  • (8) variable templates

C++17

  • (9) nested namespaces

  • (9) utf-8 character literals

  • (9) splicing for maps and sets (insert_or_assign, try_emplace, merge, extract)

  • (9) inline variables

  • (9) std::optional

  • (9) std::any

  • (9) std::filesystem

  • (9) std::string_view

  • (10) std::variant, std::visit

  • (10) structured bindings

  • (10) selection statements (if og switch) with initializer

  • (10) std::apply, std::invoke

  • (10) fold expressions

  • (10) template argument deduction for class templates

  • (10) declaring non-type template parameters with auto

  • (10) if constexpr

  • (10) constexpr lambda

  • (10) lambda capture this by value

C++20

  • (11) range-based for with initializer
  • (11) std::starts_with std::ends_with for std::string og std::string_view
  • (11) uniform container erasure (std::erase og std::erase_if)
  • (11) std::u8string
  • (11) std::bind_front
  • (11) std::endian
  • (11) <numbers> - matematiske konstanter
  • (11) std::jthread - joining thread with cancellation
  • (11) <source_location>
  • (11) <span>
  • (12) <bit>
  • (12) consteval, constinit
  • (12) mer constexpr (std::vector std::string)
  • (12) designated initializers (fra C)
  • (12) 3-way comparison <=> og operator==() = default og <compare>
  • (13) <format>
  • (14) Calendar and Time Zone library (<chrono>)
  • (14) abbreviated function templates
  • (15) <concepts>
  • (16) <coroutine>
  • (17) modules
  • (18) <ranges>

C++23 TBD

  • stacktrace
  • string::contains
  • size_t -> 100uz
  • pattern matching?
  • modules for std?
  • coroutine task?

Oppsummering Unicode