api: "YAML JSON TOON Database"
version: "1.0.0"
format: "json"
dataset:
  id: 49
  slug: "cpp-modern-features"
  title: "Modern C++ Features (C++11 through C++23)"
  description: "Modern C++ features from C++11 to C++23: smart pointers, move semantics, lambdas, concepts, ranges, coroutines, and modules."
  category: "Programming Languages"
  category_slug: "programming-languages"
  tags: "cpp,c++,modern-cpp,smart-pointers,lambdas,concepts,ranges,coroutines"
  view_count: 0
  created_at: 1778695229
  updated_at: 1778695229
data:
  features:
    - name: "Smart Pointers"
      standard: "C++11"
      description: "Automatic memory management: unique_ptr (exclusive ownership), shared_ptr (reference counting), weak_ptr (non-owning observer)"
      example: "auto ptr = std::make_unique<Foo>();"
    - name: "Move Semantics"
      standard: "C++11"
      description: "Transfer resources instead of copying: rvalue references (&&), std::move, move constructors/assignment operators"
      example: "std::vector<int> v2 = std::move(v1);"
    - name: "Lambda Expressions"
      standard: "C++11"
      description: "Anonymous functions with capture lists, mutable lambdas, generic lambdas (auto params in C++14)"
      example: "auto add = [capture](int x) { return x + offset; };"
    - name: "auto Type Deduction"
      standard: "C++11"
      description: "Compiler deduces type from initializer expression, reduces verbosity"
      example: "auto it = map.find(key); auto [key, val] = *it;"
    - name: "constexpr"
      standard: "C++11/14/17"
      description: "Compile-time evaluation: C++11 (limited), C++14 (loops/branches), C++17 (if constexpr)"
      example: "constexpr int factorial(int n) { return n <= 1 ? 1 : n * factorial(n-1); }"
    - name: "Range-based for"
      standard: "C++11"
      description: "Simplified iteration over containers and initializer lists"
      example: "for (const auto& item : container) { /* ... */ }"
    - name: "Structured Bindings"
      standard: "C++17"
      description: "Decompose tuples, pairs, and structs into named variables"
      example: "auto [name, age] = getPerson();"
    - name: "std::optional"
      standard: "C++17"
      description: "Type-safe alternative to nullable pointers, represents optional values"
      example: "std::optional<std::string> findUser(int id);"
    - name: "Concepts"
      standard: "C++20"
      description: "Named compile-time constraints on template parameters, better error messages"
      example: "template<std::integral T> T add(T a, T b) { return a + b; }"
    - name: "Ranges"
      standard: "C++20"
      description: "Composable algorithms operating on ranges: views (lazy), actions (eager), pipe operator"
      example: "auto evens = numbers | std::views::filter([](int n){ return n%2==0; }) | std::views::take(10);"
    - name: "Coroutines"
      standard: "C++20"
      description: "Functions that can suspend and resume: co_await, co_yield, co_return"
      example: "Generator<int> fib() { co_yield 0; co_yield 1; /* ... */ }"
    - name: "Modules"
      standard: "C++20"
      description: "Replace #include with import/export for faster compilation and better encapsulation"
      example: "import std; export module mylib;"
