diff --git a/chapter_05/examples/CMakeLists.txt b/chapter_05/examples/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2d5c64a0cd2c6875c949ebb70926a71cb2f066ee
--- /dev/null
+++ b/chapter_05/examples/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.28)
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD 23)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+project(cxx_course_examples CXX)
+
+
+FILE (GLOB sources ./ *.cc)
+foreach(source ${sources})
+    get_filename_component(withoutext "${source}" NAME_WE)
+    add_executable("${withoutext}" "${source}")
+endforeach()
+
+
diff --git a/chapter_05/examples/lambda_captures.cc b/chapter_05/examples/lambda_captures.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2cb21b4124df8a5199425ca61019fd80e661eed8
--- /dev/null
+++ b/chapter_05/examples/lambda_captures.cc
@@ -0,0 +1,18 @@
+#include "Vbose.hh"
+
+auto main() -> int
+{
+
+    std::cout << "Declaring lambda function {\n";
+    Vbose locvar{ "dinosaur" };
+    auto lambda = [=](int i) {
+        std::cout << "\nIn lambda function, captured value of locvar is : "
+                  << locvar.getval() << "\n";
+        return i * i * i;
+    };
+    std::cout << "Declaring lambda function }\n";
+
+    std::cout << "Calling lambda function {\n";
+    std::cout << 5 << " -> " << lambda(5) << "\n";
+    std::cout << "Calling lambda function }\n";
+}
diff --git a/chapter_05/examples/mutable_lambdas.cc b/chapter_05/examples/mutable_lambdas.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b75719ed46aadcc5b45f5127abff4c80cd9eee69
--- /dev/null
+++ b/chapter_05/examples/mutable_lambdas.cc
@@ -0,0 +1,28 @@
+#include <algorithm>
+#include <iostream>
+#include <vector>
+#include <utility>
+
+auto main() -> int
+{
+    using namespace std;
+    vector<unsigned long> v, w;
+    generate_n(back_inserter(v), 100, [i = 0UL]() mutable {
+        ++i;
+        return i * i;
+    });
+    // v = [1, 4, 9, 16 ... ]
+    std::cout << " v = \n";
+    for (auto el : v)
+        std::cout << el << "\n";
+    generate_n(back_inserter(w), 50, [ i = 0UL, j = 1UL ]() mutable {
+        i = std::exchange(j, j + i);
+        return i;
+    });
+    // w = [1, 1, 2, 3, 5, 8, 11 ...]
+
+    std::cout << " w = \n";
+    for (auto&& el : w)
+        std::cout << el << "\n";
+}
+