From d5cf7720ea7f164683b2e3e92001811f906a5cf1 Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Thu, 11 Jul 2024 19:03:43 +0200
Subject: [PATCH] Beispiele 11.7.2024

---
 20240711/ad-20240711.pdf           | Bin 114491 -> 113803 bytes
 20240711/ad-20240711.tex           |  20 +-----
 20240711/exceptions-00.cpp         |  19 +++++
 20240711/exceptions-01.cpp         |  21 ++++++
 20240711/exceptions-02.cpp         |  43 ++++++++++++
 20240711/exceptions-04.cpp         |  28 ++++++++
 20240711/exceptions-05.cpp         |  33 +++++++++
 20240711/exceptions-06.cpp         |  33 +++++++++
 20240711/exceptions-07.cpp         |  38 ++++++++++
 20240711/exceptions-08.cpp         |  38 ++++++++++
 20240711/exceptions-09.cpp         |  39 +++++++++++
 20240711/exceptions-10.cpp         |  42 +++++++++++
 20240711/exceptions-11.cpp         |  43 ++++++++++++
 20240711/iterators-01.cpp          |   9 +++
 20240711/iterators-01.s            | 107 +++++++++++++++++++++++++++++
 20240711/iterators-02.cpp          |   9 +++
 20240711/iterators-03.cpp          |  10 +++
 20240711/iterators-03.s            | 107 +++++++++++++++++++++++++++++
 20240711/iterators-04.cpp          |  10 +++
 20240711/iterators-05.cpp          |  14 ++++
 20240711/iterators-06.cpp          |  14 ++++
 20240711/iterators-07.cpp          |  14 ++++
 20240711/iterators-08.cpp          |  14 ++++
 20240711/iterators-09.cpp          |  14 ++++
 20240711/r-value-references-01.cpp |  46 +++++++++++++
 20240711/r-value-references-02.cpp |  54 +++++++++++++++
 20240711/r-value-references-03.cpp |  57 +++++++++++++++
 20240711/r-value-references-04.cpp |  54 +++++++++++++++
 20240711/r-value-references-05.cpp |  60 ++++++++++++++++
 20240711/r-value-references-06.cpp |  69 +++++++++++++++++++
 20240711/r-value-references-07.cpp |  69 +++++++++++++++++++
 20240711/r-value-references-08.cpp |  76 ++++++++++++++++++++
 20240711/r-value-references-09.cpp |  76 ++++++++++++++++++++
 20240711/r-value-references-10.cpp |  76 ++++++++++++++++++++
 20240711/r-value-references-11.cpp |  77 +++++++++++++++++++++
 20240711/r-value-references-12.cpp |  83 ++++++++++++++++++++++
 20240711/smart-pointers-01.cpp     |  13 ++++
 20240711/smart-pointers-02.cpp     |  15 ++++
 20240711/smart-pointers-03.cpp     |  18 +++++
 20240711/smart-pointers-04.cpp     |  21 ++++++
 20240711/smart-pointers-05.cpp     |  22 ++++++
 20240711/smart-pointers-06.cpp     |  17 +++++
 20240711/smart-pointers-07.cpp     |  18 +++++
 20240711/smart-pointers-08.cpp     |  18 +++++
 20240711/smart-pointers-09.cpp     |  18 +++++
 20240711/smart-pointers-10.cpp     |  25 +++++++
 20240711/smart-pointers-11.cpp     |  26 +++++++
 20240711/smart-pointers-12.cpp     |  28 ++++++++
 20240711/smart-pointers-13.cpp     |  32 +++++++++
 20240711/smart-pointers-14.cpp     |  32 +++++++++
 20240711/smart-pointers-15.cpp     |  33 +++++++++
 20240711/smart-pointers-16.cpp     |  18 +++++
 20240711/smart-pointers-17.cpp     |  19 +++++
 20240711/smart-pointers-18.cpp     |  16 +++++
 20240711/smart-pointers-19.cpp     |  22 ++++++
 20240711/smart-pointers-20.cpp     |  25 +++++++
 20240711/smart-pointers-21.cpp     |  26 +++++++
 20240711/smart-pointers-22.cpp     |  19 +++++
 20240711/smart-pointers-23.cpp     |  24 +++++++
 20240711/smart-pointers-24.cpp     |  24 +++++++
 20240711/smart-pointers-25.cpp     |  30 ++++++++
 20240711/smart-pointers-26.cpp     |  32 +++++++++
 20240711/smart-pointers-27.cpp     |  30 ++++++++
 20240711/smart-pointers-28.cpp     |  26 +++++++
 20240711/templates-01.cpp          |  23 +++++++
 20240711/templates-02.cpp          |  19 +++++
 20240711/templates-03.cpp          |  17 +++++
 20240711/templates-04.cpp          |  24 +++++++
 20240711/templates-07.cpp          |  35 ++++++++++
 20240711/templates-08.cpp          |  41 +++++++++++
 20240711/templates-09.cpp          |  41 +++++++++++
 20240711/templates-10.cpp          |  54 +++++++++++++++
 20240711/templates-11.cpp          |  56 +++++++++++++++
 20240711/templates-12.cpp          |  56 +++++++++++++++
 20240711/templates-13.cpp          |  61 ++++++++++++++++
 20240711/templates-14.cpp          |  54 +++++++++++++++
 20240711/templates-15.cpp          |  54 +++++++++++++++
 20240711/templates-16.cpp          |  64 +++++++++++++++++
 20240711/type-conversions-01.cpp   |  11 +++
 20240711/type-conversions-02.cpp   |  11 +++
 20240711/type-conversions-03.cpp   |  24 +++++++
 20240711/type-conversions-04.cpp   |  24 +++++++
 20240711/type-conversions-05.cpp   |  25 +++++++
 20240711/type-conversions-06.cpp   |  25 +++++++
 20240711/type-conversions-07.cpp   |  25 +++++++
 20240711/type-conversions-08.cpp   |  28 ++++++++
 20240711/type-conversions-09.cpp   |  28 ++++++++
 20240711/type-conversions-10.cpp   |  28 ++++++++
 20240711/type-conversions-11.cpp   |  28 ++++++++
 20240711/type-conversions-11a.cpp  |  28 ++++++++
 20240711/type-conversions-11b.cpp  |  33 +++++++++
 20240711/type-conversions-12.cpp   |  29 ++++++++
 20240711/type-conversions-12a.cpp  |  29 ++++++++
 20240711/type-conversions-13.cpp   |  29 ++++++++
 20240711/type-conversions-14.cpp   |  31 +++++++++
 20240711/type-conversions-15.cpp   |  37 ++++++++++
 20240711/type-conversions-16.cpp   |  37 ++++++++++
 20240711/type-conversions-17.cpp   |  37 ++++++++++
 20240711/type-conversions-18.cpp   |  41 +++++++++++
 20240711/type-conversions-19.cpp   |  41 +++++++++++
 20240711/type-conversions-20.cpp   |   9 +++
 20240711/type-conversions-21.cpp   |   9 +++
 20240711/type-conversions-22.cpp   |   9 +++
 20240711/type-conversions-23.cpp   |   9 +++
 20240711/type-conversions-24.cpp   |   9 +++
 20240711/type-conversions-25.cpp   |   9 +++
 106 files changed, 3426 insertions(+), 19 deletions(-)
 create mode 100644 20240711/exceptions-00.cpp
 create mode 100644 20240711/exceptions-01.cpp
 create mode 100644 20240711/exceptions-02.cpp
 create mode 100644 20240711/exceptions-04.cpp
 create mode 100644 20240711/exceptions-05.cpp
 create mode 100644 20240711/exceptions-06.cpp
 create mode 100644 20240711/exceptions-07.cpp
 create mode 100644 20240711/exceptions-08.cpp
 create mode 100644 20240711/exceptions-09.cpp
 create mode 100644 20240711/exceptions-10.cpp
 create mode 100644 20240711/exceptions-11.cpp
 create mode 100644 20240711/iterators-01.cpp
 create mode 100644 20240711/iterators-01.s
 create mode 100644 20240711/iterators-02.cpp
 create mode 100644 20240711/iterators-03.cpp
 create mode 100644 20240711/iterators-03.s
 create mode 100644 20240711/iterators-04.cpp
 create mode 100644 20240711/iterators-05.cpp
 create mode 100644 20240711/iterators-06.cpp
 create mode 100644 20240711/iterators-07.cpp
 create mode 100644 20240711/iterators-08.cpp
 create mode 100644 20240711/iterators-09.cpp
 create mode 100644 20240711/r-value-references-01.cpp
 create mode 100644 20240711/r-value-references-02.cpp
 create mode 100644 20240711/r-value-references-03.cpp
 create mode 100644 20240711/r-value-references-04.cpp
 create mode 100644 20240711/r-value-references-05.cpp
 create mode 100644 20240711/r-value-references-06.cpp
 create mode 100644 20240711/r-value-references-07.cpp
 create mode 100644 20240711/r-value-references-08.cpp
 create mode 100644 20240711/r-value-references-09.cpp
 create mode 100644 20240711/r-value-references-10.cpp
 create mode 100644 20240711/r-value-references-11.cpp
 create mode 100644 20240711/r-value-references-12.cpp
 create mode 100644 20240711/smart-pointers-01.cpp
 create mode 100644 20240711/smart-pointers-02.cpp
 create mode 100644 20240711/smart-pointers-03.cpp
 create mode 100644 20240711/smart-pointers-04.cpp
 create mode 100644 20240711/smart-pointers-05.cpp
 create mode 100644 20240711/smart-pointers-06.cpp
 create mode 100644 20240711/smart-pointers-07.cpp
 create mode 100644 20240711/smart-pointers-08.cpp
 create mode 100644 20240711/smart-pointers-09.cpp
 create mode 100644 20240711/smart-pointers-10.cpp
 create mode 100644 20240711/smart-pointers-11.cpp
 create mode 100644 20240711/smart-pointers-12.cpp
 create mode 100644 20240711/smart-pointers-13.cpp
 create mode 100644 20240711/smart-pointers-14.cpp
 create mode 100644 20240711/smart-pointers-15.cpp
 create mode 100644 20240711/smart-pointers-16.cpp
 create mode 100644 20240711/smart-pointers-17.cpp
 create mode 100644 20240711/smart-pointers-18.cpp
 create mode 100644 20240711/smart-pointers-19.cpp
 create mode 100644 20240711/smart-pointers-20.cpp
 create mode 100644 20240711/smart-pointers-21.cpp
 create mode 100644 20240711/smart-pointers-22.cpp
 create mode 100644 20240711/smart-pointers-23.cpp
 create mode 100644 20240711/smart-pointers-24.cpp
 create mode 100644 20240711/smart-pointers-25.cpp
 create mode 100644 20240711/smart-pointers-26.cpp
 create mode 100644 20240711/smart-pointers-27.cpp
 create mode 100644 20240711/smart-pointers-28.cpp
 create mode 100644 20240711/templates-01.cpp
 create mode 100644 20240711/templates-02.cpp
 create mode 100644 20240711/templates-03.cpp
 create mode 100644 20240711/templates-04.cpp
 create mode 100644 20240711/templates-07.cpp
 create mode 100644 20240711/templates-08.cpp
 create mode 100644 20240711/templates-09.cpp
 create mode 100644 20240711/templates-10.cpp
 create mode 100644 20240711/templates-11.cpp
 create mode 100644 20240711/templates-12.cpp
 create mode 100644 20240711/templates-13.cpp
 create mode 100644 20240711/templates-14.cpp
 create mode 100644 20240711/templates-15.cpp
 create mode 100644 20240711/templates-16.cpp
 create mode 100644 20240711/type-conversions-01.cpp
 create mode 100644 20240711/type-conversions-02.cpp
 create mode 100644 20240711/type-conversions-03.cpp
 create mode 100644 20240711/type-conversions-04.cpp
 create mode 100644 20240711/type-conversions-05.cpp
 create mode 100644 20240711/type-conversions-06.cpp
 create mode 100644 20240711/type-conversions-07.cpp
 create mode 100644 20240711/type-conversions-08.cpp
 create mode 100644 20240711/type-conversions-09.cpp
 create mode 100644 20240711/type-conversions-10.cpp
 create mode 100644 20240711/type-conversions-11.cpp
 create mode 100644 20240711/type-conversions-11a.cpp
 create mode 100644 20240711/type-conversions-11b.cpp
 create mode 100644 20240711/type-conversions-12.cpp
 create mode 100644 20240711/type-conversions-12a.cpp
 create mode 100644 20240711/type-conversions-13.cpp
 create mode 100644 20240711/type-conversions-14.cpp
 create mode 100644 20240711/type-conversions-15.cpp
 create mode 100644 20240711/type-conversions-16.cpp
 create mode 100644 20240711/type-conversions-17.cpp
 create mode 100644 20240711/type-conversions-18.cpp
 create mode 100644 20240711/type-conversions-19.cpp
 create mode 100644 20240711/type-conversions-20.cpp
 create mode 100644 20240711/type-conversions-21.cpp
 create mode 100644 20240711/type-conversions-22.cpp
 create mode 100644 20240711/type-conversions-23.cpp
 create mode 100644 20240711/type-conversions-24.cpp
 create mode 100644 20240711/type-conversions-25.cpp

diff --git a/20240711/ad-20240711.pdf b/20240711/ad-20240711.pdf
index 62056f01cad5b8fad7345b1b9a5596d27da26ea0..5bd62b4b486f9cb9b237eb0a37790869f337975b 100644
GIT binary patch
delta 8363
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

delta 9122
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

diff --git a/20240711/ad-20240711.tex b/20240711/ad-20240711.tex
index b166d26..b7693b6 100644
--- a/20240711/ad-20240711.tex
+++ b/20240711/ad-20240711.tex
@@ -60,7 +60,7 @@
     \item[\textbf{4}] \textbf{Kryptographie}
     \item[\textbf{5}] \textbf{Datenkompression}
     \item[\color{orange}\textbf{6}] \textbf{\color{orange}Einführung in C++, Datenorganisation}
-    \item[\color{orange}\textbf{7}] \textbf{\color{orange}Hardwarenahe Algorithmen}
+    \item[\color{medgreen}\textbf{7}] \textbf{\color{medgreen}Hardwarenahe Algorithmen}
   \end{itemize}
 
 \end{frame}
@@ -423,22 +423,4 @@
   \end{itemize}
 \end{frame}
 
-\section{Hardwarenahe Algorithmen}
-
-\begin{frame}
-  \showsection
-
-  \textbf{Aufgabe:}
-  Schreiben Sie die Sinusfunktion selbst.
-
-  \smallskip
-
-  \begin{itemize}
-    \item
-      Wir setzen nur die Grundrechenarten voraus.
-    \item
-      möglichst effizient
-  \end{itemize}
-\end{frame}
-
 \end{document}
diff --git a/20240711/exceptions-00.cpp b/20240711/exceptions-00.cpp
new file mode 100644
index 0000000..6319e0e
--- /dev/null
+++ b/20240711/exceptions-00.cpp
@@ -0,0 +1,19 @@
+#include <iostream>
+
+using namespace std;
+
+int main ()
+{
+  int a = 42;
+  int b = 0;
+  if (b == 0)
+    {
+      cout << "Irgendwas ist schiefgelaufen: Ganzzahldivision durch Null" << endl;
+    }
+  else
+    {
+      int c = a / b;
+      cout << "c = " << c << endl;
+    }
+  return 0;
+}
diff --git a/20240711/exceptions-01.cpp b/20240711/exceptions-01.cpp
new file mode 100644
index 0000000..72db25a
--- /dev/null
+++ b/20240711/exceptions-01.cpp
@@ -0,0 +1,21 @@
+#include <iostream>
+
+using namespace std;
+
+int main ()
+{
+  try
+    {
+      int a = 42;
+      int b = 0;
+      if (b == 0)
+        throw "Ganzzahldivision durch Null";
+      int c = a / b;
+      cout << "c = " << c << endl;
+    }
+  catch (const char *msg)
+    {
+      cout << "Irgendwas ist schiefgelaufen: " << msg << endl;
+    }
+  return 0;
+}
diff --git a/20240711/exceptions-02.cpp b/20240711/exceptions-02.cpp
new file mode 100644
index 0000000..fd78e31
--- /dev/null
+++ b/20240711/exceptions-02.cpp
@@ -0,0 +1,43 @@
+#include <iostream>
+
+using namespace std;
+
+void check_answer (int answer)
+{
+  if (answer != 42)
+    {
+      try
+      {
+        if (answer == 10)
+          throw answer;
+        else if (answer == 137)
+          throw "alpha";
+      }
+      catch (int e)
+      {
+        cout << "Yeah!" << endl;
+        throw;
+      }
+      throw "bullshit";
+    }
+}
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 23)
+      throw answer;
+    else
+      check_answer (answer);
+  }
+  catch (const char *e)
+  {
+    cout << "caught string exception: " << e << endl;
+  }
+  cout << "And what was the question?" << endl;
+  return 0;
+}
diff --git a/20240711/exceptions-04.cpp b/20240711/exceptions-04.cpp
new file mode 100644
index 0000000..a20e569
--- /dev/null
+++ b/20240711/exceptions-04.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+};
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer != 42)
+      throw philosophy_exception (answer);
+    cout << "And what was the question?" << endl;
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception" << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-05.cpp b/20240711/exceptions-05.cpp
new file mode 100644
index 0000000..f61ca5a
--- /dev/null
+++ b/20240711/exceptions-05.cpp
@@ -0,0 +1,33 @@
+#include <iostream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  int get_answer () { return answer; }
+};
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer != 42)
+      throw philosophy_exception (answer);
+    cout << "And what was the question?" << endl;
+  }
+  catch (philosophy_exception &e)
+  {
+    cout << "caught philosophy exception: " << e.get_answer () << endl;
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception" << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-06.cpp b/20240711/exceptions-06.cpp
new file mode 100644
index 0000000..326b7bc
--- /dev/null
+++ b/20240711/exceptions-06.cpp
@@ -0,0 +1,33 @@
+#include <iostream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  int get_answer () { return answer; }
+};
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer != 42)
+      throw philosophy_exception (answer);
+    cout << "And what was the question?" << endl;
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception" << endl;
+  }
+  catch (philosophy_exception &e)
+  {
+    cout << "caught philosophy exception: " << e.get_answer () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-07.cpp b/20240711/exceptions-07.cpp
new file mode 100644
index 0000000..6a8cf00
--- /dev/null
+++ b/20240711/exceptions-07.cpp
@@ -0,0 +1,38 @@
+#include <iostream>
+#include <sstream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  virtual const char *what ();
+};
+
+const char *philosophy_exception::what ()
+{
+  ostringstream buffer;
+  buffer << "philosophy exception #" << answer;
+  return buffer.str ().c_str ();
+}
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 42)
+      cout << "And what was the question?" << endl;
+    else
+      throw philosophy_exception (answer);
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception: " << e.what () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-08.cpp b/20240711/exceptions-08.cpp
new file mode 100644
index 0000000..bf3e05e
--- /dev/null
+++ b/20240711/exceptions-08.cpp
@@ -0,0 +1,38 @@
+#include <iostream>
+#include <sstream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  virtual const char *what () const noexcept;
+};
+
+const char *philosophy_exception::what () const noexcept
+{
+  ostringstream buffer;
+  buffer << "philosophy exception #" << answer;
+  return buffer.str ().c_str ();
+}
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 42)
+      cout << "And what was the question?" << endl;
+    else
+      throw philosophy_exception (answer);
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception: " << e.what () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-09.cpp b/20240711/exceptions-09.cpp
new file mode 100644
index 0000000..0d0eca9
--- /dev/null
+++ b/20240711/exceptions-09.cpp
@@ -0,0 +1,39 @@
+#include <iostream>
+#include <sstream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  virtual const char *what () const noexcept;
+};
+
+const char *philosophy_exception::what () const noexcept
+{
+  return "Marvin";
+//  ostringstream buffer;
+//  buffer << "philosophy exception #" << answer;
+//  return buffer.str ().c_str ();
+}
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 42)
+      cout << "And what was the question?" << endl;
+    else
+      throw philosophy_exception (answer);
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception: " << e.what () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-10.cpp b/20240711/exceptions-10.cpp
new file mode 100644
index 0000000..35ddd03
--- /dev/null
+++ b/20240711/exceptions-10.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+#include <sstream>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+  static const char *buffer;
+public:
+  philosophy_exception (int a) { answer = a; }
+  virtual const char *what () const noexcept;
+};
+
+const char *philosophy_exception::what () const noexcept
+{
+  return buffer;
+//  ostringstream buffer;
+//  buffer << "philosophy exception #" << answer;
+//  return buffer.str ().c_str ();
+}
+
+const char *philosophy_exception::buffer = "Marvin";
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 42)
+      cout << "And what was the question?" << endl;
+    else
+      throw philosophy_exception (answer);
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception: " << e.what () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/exceptions-11.cpp b/20240711/exceptions-11.cpp
new file mode 100644
index 0000000..6188c39
--- /dev/null
+++ b/20240711/exceptions-11.cpp
@@ -0,0 +1,43 @@
+#include <iostream>
+#include <sstream>
+#include <string.h>
+
+using namespace std;
+
+class philosophy_exception: public exception
+{
+  int answer;
+  static char buffer[42];
+public:
+  philosophy_exception (int a) { answer = a; }
+  virtual const char *what () const noexcept;
+};
+
+const char *philosophy_exception::what () const noexcept
+{
+  ostringstream tmp_buffer;
+  tmp_buffer << "philosophy exception #" << answer;
+  strcpy (buffer, tmp_buffer.str ().c_str ());
+  return buffer;
+}
+
+char philosophy_exception::buffer[42] = "Marvin";
+
+int main ()
+{
+  int answer;
+  cout << "What's your answer? ";
+  cin >> answer;
+  try
+  {
+    if (answer == 42)
+      cout << "And what was the question?" << endl;
+    else
+      throw philosophy_exception (answer);
+  }
+  catch (exception &e)
+  {
+    cout << "caught exception: " << e.what () << endl;
+  }
+  return 0;
+}
diff --git a/20240711/iterators-01.cpp b/20240711/iterators-01.cpp
new file mode 100644
index 0000000..3429606
--- /dev/null
+++ b/20240711/iterators-01.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+
+int main ()
+{
+  int prime[5] = { 2, 3, 5, 7, 11 };
+  for (int *p = prime; p != prime + 5; p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-01.s b/20240711/iterators-01.s
new file mode 100644
index 0000000..fdacf10
--- /dev/null
+++ b/20240711/iterators-01.s
@@ -0,0 +1,107 @@
+	.file	"iterators-01.cpp"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB1782:
+	.cfi_startproc
+	pushq	%r13
+	.cfi_def_cfa_offset 16
+	.cfi_offset 13, -16
+	pushq	%r12
+	.cfi_def_cfa_offset 24
+	.cfi_offset 12, -24
+	pushq	%rbp
+	.cfi_def_cfa_offset 32
+	.cfi_offset 6, -32
+	pushq	%rbx
+	.cfi_def_cfa_offset 40
+	.cfi_offset 3, -40
+	subq	$40, %rsp
+	.cfi_def_cfa_offset 80
+	movl	$2, (%rsp)
+	movl	$3, 4(%rsp)
+	movl	$5, 8(%rsp)
+	movl	$7, 12(%rsp)
+	movl	$11, 16(%rsp)
+	movq	%rsp, %rbp
+	leaq	_ZSt4cout(%rip), %r12
+	jmp	.L5
+.L9:
+	call	_ZSt16__throw_bad_castv@PLT
+.L3:
+	movq	%r13, %rdi
+	call	_ZNKSt5ctypeIcE13_M_widen_initEv@PLT
+	movq	0(%r13), %rax
+	movl	$10, %esi
+	movq	%r13, %rdi
+	call	*48(%rax)
+	movl	%eax, %esi
+.L4:
+	movsbl	%sil, %esi
+	movq	%rbx, %rdi
+	call	_ZNSo3putEc@PLT
+	movq	%rax, %rdi
+	call	_ZNSo5flushEv@PLT
+	addq	$4, %rbp
+	leaq	20(%rsp), %rax
+	cmpq	%rax, %rbp
+	je	.L8
+.L5:
+	movl	0(%rbp), %esi
+	movq	%r12, %rdi
+	call	_ZNSolsEi@PLT
+	movq	%rax, %rbx
+	movq	(%rax), %rax
+	movq	-24(%rax), %rax
+	movq	240(%rbx,%rax), %r13
+	testq	%r13, %r13
+	je	.L9
+	cmpb	$0, 56(%r13)
+	je	.L3
+	movzbl	67(%r13), %esi
+	jmp	.L4
+.L8:
+	movl	$0, %eax
+	addq	$40, %rsp
+	.cfi_def_cfa_offset 40
+	popq	%rbx
+	.cfi_def_cfa_offset 32
+	popq	%rbp
+	.cfi_def_cfa_offset 24
+	popq	%r12
+	.cfi_def_cfa_offset 16
+	popq	%r13
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE1782:
+	.size	main, .-main
+	.type	_GLOBAL__sub_I_main, @function
+_GLOBAL__sub_I_main:
+.LFB2312:
+	.cfi_startproc
+	pushq	%rbx
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	leaq	_ZStL8__ioinit(%rip), %rbx
+	movq	%rbx, %rdi
+	call	_ZNSt8ios_base4InitC1Ev@PLT
+	leaq	__dso_handle(%rip), %rdx
+	movq	%rbx, %rsi
+	movq	_ZNSt8ios_base4InitD1Ev@GOTPCREL(%rip), %rdi
+	call	__cxa_atexit@PLT
+	popq	%rbx
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE2312:
+	.size	_GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main
+	.section	.init_array,"aw"
+	.align 8
+	.quad	_GLOBAL__sub_I_main
+	.local	_ZStL8__ioinit
+	.comm	_ZStL8__ioinit,1,1
+	.hidden	__dso_handle
+	.ident	"GCC: (Debian 12.2.0-14) 12.2.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20240711/iterators-02.cpp b/20240711/iterators-02.cpp
new file mode 100644
index 0000000..13b3f45
--- /dev/null
+++ b/20240711/iterators-02.cpp
@@ -0,0 +1,9 @@
+#include <iostream>
+
+int main ()
+{
+  int prime[5] = { 2, 3, 5, 7, 11 };
+  for (int *p = prime; p <= prime + 4; p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-03.cpp b/20240711/iterators-03.cpp
new file mode 100644
index 0000000..7143024
--- /dev/null
+++ b/20240711/iterators-03.cpp
@@ -0,0 +1,10 @@
+#include <iostream>
+#include <array>
+
+int main ()
+{
+  std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } };
+  for (std::array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-03.s b/20240711/iterators-03.s
new file mode 100644
index 0000000..df4592a
--- /dev/null
+++ b/20240711/iterators-03.s
@@ -0,0 +1,107 @@
+	.file	"iterators-03.cpp"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB1824:
+	.cfi_startproc
+	pushq	%r13
+	.cfi_def_cfa_offset 16
+	.cfi_offset 13, -16
+	pushq	%r12
+	.cfi_def_cfa_offset 24
+	.cfi_offset 12, -24
+	pushq	%rbp
+	.cfi_def_cfa_offset 32
+	.cfi_offset 6, -32
+	pushq	%rbx
+	.cfi_def_cfa_offset 40
+	.cfi_offset 3, -40
+	subq	$40, %rsp
+	.cfi_def_cfa_offset 80
+	movl	$2, (%rsp)
+	movl	$3, 4(%rsp)
+	movl	$5, 8(%rsp)
+	movl	$7, 12(%rsp)
+	movl	$11, 16(%rsp)
+	movq	%rsp, %rbp
+	leaq	_ZSt4cout(%rip), %r12
+	jmp	.L5
+.L9:
+	call	_ZSt16__throw_bad_castv@PLT
+.L3:
+	movq	%r13, %rdi
+	call	_ZNKSt5ctypeIcE13_M_widen_initEv@PLT
+	movq	0(%r13), %rax
+	movl	$10, %esi
+	movq	%r13, %rdi
+	call	*48(%rax)
+	movl	%eax, %esi
+.L4:
+	movsbl	%sil, %esi
+	movq	%rbx, %rdi
+	call	_ZNSo3putEc@PLT
+	movq	%rax, %rdi
+	call	_ZNSo5flushEv@PLT
+	addq	$4, %rbp
+	leaq	20(%rsp), %rax
+	cmpq	%rax, %rbp
+	je	.L8
+.L5:
+	movl	0(%rbp), %esi
+	movq	%r12, %rdi
+	call	_ZNSolsEi@PLT
+	movq	%rax, %rbx
+	movq	(%rax), %rax
+	movq	-24(%rax), %rax
+	movq	240(%rbx,%rax), %r13
+	testq	%r13, %r13
+	je	.L9
+	cmpb	$0, 56(%r13)
+	je	.L3
+	movzbl	67(%r13), %esi
+	jmp	.L4
+.L8:
+	movl	$0, %eax
+	addq	$40, %rsp
+	.cfi_def_cfa_offset 40
+	popq	%rbx
+	.cfi_def_cfa_offset 32
+	popq	%rbp
+	.cfi_def_cfa_offset 24
+	popq	%r12
+	.cfi_def_cfa_offset 16
+	popq	%r13
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE1824:
+	.size	main, .-main
+	.type	_GLOBAL__sub_I_main, @function
+_GLOBAL__sub_I_main:
+.LFB2358:
+	.cfi_startproc
+	pushq	%rbx
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	leaq	_ZStL8__ioinit(%rip), %rbx
+	movq	%rbx, %rdi
+	call	_ZNSt8ios_base4InitC1Ev@PLT
+	leaq	__dso_handle(%rip), %rdx
+	movq	%rbx, %rsi
+	movq	_ZNSt8ios_base4InitD1Ev@GOTPCREL(%rip), %rdi
+	call	__cxa_atexit@PLT
+	popq	%rbx
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE2358:
+	.size	_GLOBAL__sub_I_main, .-_GLOBAL__sub_I_main
+	.section	.init_array,"aw"
+	.align 8
+	.quad	_GLOBAL__sub_I_main
+	.local	_ZStL8__ioinit
+	.comm	_ZStL8__ioinit,1,1
+	.hidden	__dso_handle
+	.ident	"GCC: (Debian 12.2.0-14) 12.2.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20240711/iterators-04.cpp b/20240711/iterators-04.cpp
new file mode 100644
index 0000000..3b04a80
--- /dev/null
+++ b/20240711/iterators-04.cpp
@@ -0,0 +1,10 @@
+#include <iostream>
+#include <vector>
+
+int main ()
+{
+  std::vector <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (std::vector <int>::iterator p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-05.cpp b/20240711/iterators-05.cpp
new file mode 100644
index 0000000..7c62ad8
--- /dev/null
+++ b/20240711/iterators-05.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+int main ()
+{
+  std::vector <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (std::vector <int>::iterator p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  prime.push_back (13);
+  prime.push_back (17);
+  for (std::vector <int>::iterator p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-06.cpp b/20240711/iterators-06.cpp
new file mode 100644
index 0000000..8698385
--- /dev/null
+++ b/20240711/iterators-06.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+int main ()
+{
+  std::vector <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (auto p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  prime.push_back (13);
+  prime.push_back (17);
+  for (auto p = prime.begin (); p != prime.end (); p++)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-07.cpp b/20240711/iterators-07.cpp
new file mode 100644
index 0000000..e7ca0b0
--- /dev/null
+++ b/20240711/iterators-07.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+int main ()
+{
+  std::vector <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (auto p : prime)
+    std::cout << *p << std::endl;
+  prime.push_back (13);
+  prime.push_back (17);
+  for (auto p : prime)
+    std::cout << *p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-08.cpp b/20240711/iterators-08.cpp
new file mode 100644
index 0000000..80328d1
--- /dev/null
+++ b/20240711/iterators-08.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <vector>
+
+int main ()
+{
+  std::vector <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (auto &p : prime)
+    std::cout << p << std::endl;
+  prime.push_back (13);
+  prime.push_back (17);
+  for (auto &p : prime)
+    std::cout << p << std::endl;
+  return 0;
+}
diff --git a/20240711/iterators-09.cpp b/20240711/iterators-09.cpp
new file mode 100644
index 0000000..a1c2005
--- /dev/null
+++ b/20240711/iterators-09.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <list>
+
+int main ()
+{
+  std::list <int> prime = { { 2, 3, 5, 7, 11 } };
+  for (auto &p : prime)
+    std::cout << p << std::endl;
+  prime.push_back (13);
+  prime.push_back (17);
+  for (auto &p : prime)
+    std::cout << p << std::endl;
+  return 0;
+}
diff --git a/20240711/r-value-references-01.cpp b/20240711/r-value-references-01.cpp
new file mode 100644
index 0000000..0be06b9
--- /dev/null
+++ b/20240711/r-value-references-01.cpp
@@ -0,0 +1,46 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated c = "Hello, world!";
+  c.print ();
+  TComplicated d;
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-02.cpp b/20240711/r-value-references-02.cpp
new file mode 100644
index 0000000..5477fba
--- /dev/null
+++ b/20240711/r-value-references-02.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated c = "Hello, world!";
+  c.print ();
+  TComplicated d = c;
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-03.cpp b/20240711/r-value-references-03.cpp
new file mode 100644
index 0000000..35be424
--- /dev/null
+++ b/20240711/r-value-references-03.cpp
@@ -0,0 +1,57 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+void foo (TComplicated x)
+{
+  x.print ();
+}
+
+int main ()
+{
+  TComplicated c = "Hello, world!";
+  foo (c);
+  return 0;
+}
diff --git a/20240711/r-value-references-04.cpp b/20240711/r-value-references-04.cpp
new file mode 100644
index 0000000..e7b04d8
--- /dev/null
+++ b/20240711/r-value-references-04.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated c = "Hello, world!";
+  c.print ();
+  TComplicated d = move (c);
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-05.cpp b/20240711/r-value-references-05.cpp
new file mode 100644
index 0000000..cd82834
--- /dev/null
+++ b/20240711/r-value-references-05.cpp
@@ -0,0 +1,60 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = c;
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-06.cpp b/20240711/r-value-references-06.cpp
new file mode 100644
index 0000000..f5653e3
--- /dev/null
+++ b/20240711/r-value-references-06.cpp
@@ -0,0 +1,69 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = c;
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-07.cpp b/20240711/r-value-references-07.cpp
new file mode 100644
index 0000000..690be43
--- /dev/null
+++ b/20240711/r-value-references-07.cpp
@@ -0,0 +1,69 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = move (c);
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-08.cpp b/20240711/r-value-references-08.cpp
new file mode 100644
index 0000000..7a6de90
--- /dev/null
+++ b/20240711/r-value-references-08.cpp
@@ -0,0 +1,76 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  TComplicated &operator = (TComplicated &&src)
+  {
+    this->content = src.content;
+    src.content = NULL;
+    return *this;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = move (c);
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-09.cpp b/20240711/r-value-references-09.cpp
new file mode 100644
index 0000000..fba9c1c
--- /dev/null
+++ b/20240711/r-value-references-09.cpp
@@ -0,0 +1,76 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  TComplicated &operator = (TComplicated &&src)
+  {
+    this->content = src.content;
+    src.content = NULL;
+    return *this;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = c;
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-10.cpp b/20240711/r-value-references-10.cpp
new file mode 100644
index 0000000..bab07b5
--- /dev/null
+++ b/20240711/r-value-references-10.cpp
@@ -0,0 +1,76 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  TComplicated &operator = (TComplicated &&src)
+  {
+    this->content = src.content;
+    src.content = NULL;
+    return *this;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d = (TComplicated &&) c;
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-11.cpp b/20240711/r-value-references-11.cpp
new file mode 100644
index 0000000..253e754
--- /dev/null
+++ b/20240711/r-value-references-11.cpp
@@ -0,0 +1,77 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  void move (TComplicated &src)
+  {
+    if (content)
+      delete content;
+    this->content = src.content;
+    src.content = NULL;
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d.move (c);
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/r-value-references-12.cpp b/20240711/r-value-references-12.cpp
new file mode 100644
index 0000000..44524f7
--- /dev/null
+++ b/20240711/r-value-references-12.cpp
@@ -0,0 +1,83 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+const bool something_really_complicated = true;
+
+class TComplicated
+{
+  string *content;
+
+public:
+  TComplicated ()
+  {
+    content = NULL;
+  }
+
+  TComplicated (const char *content)
+  {
+    this->content = new string (content);
+  }
+
+  TComplicated (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+  }
+
+  ~TComplicated ()
+  {
+    cout << "~TComplicated (): content = ";
+    print ();
+    if (content)
+      delete content;
+    content = NULL;
+  }
+
+  TComplicated &operator = (const TComplicated &src)
+  {
+    if (src.content)
+      this->content = new string (*src.content);
+    else
+      this->content = NULL;
+    return *this;
+  }
+
+  string *purge_content ()
+  {
+    string *save_content = content;
+    content = NULL;
+    return save_content;
+  }
+
+  void move (TComplicated &src)
+  {
+    if (content)
+      delete content;
+    this->content = src.purge_content ();
+  }
+
+  void print ()
+  {
+    if (content)
+      cout << *content << endl;
+    else
+      cout << "(NULL)" << endl;
+  }
+};
+
+int main ()
+{
+  TComplicated d;
+  if (something_really_complicated)
+    {
+      TComplicated c = "Hello, world!";
+      c.print ();
+      d.move (c);
+    }
+  d.print ();
+  return 0;
+}
diff --git a/20240711/smart-pointers-01.cpp b/20240711/smart-pointers-01.cpp
new file mode 100644
index 0000000..ab07005
--- /dev/null
+++ b/20240711/smart-pointers-01.cpp
@@ -0,0 +1,13 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  cout << *hello << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-02.cpp b/20240711/smart-pointers-02.cpp
new file mode 100644
index 0000000..7fedf98
--- /dev/null
+++ b/20240711/smart-pointers-02.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  cout << *hello << endl;
+  delete hello;
+  cout << *hello << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-03.cpp b/20240711/smart-pointers-03.cpp
new file mode 100644
index 0000000..8c7313d
--- /dev/null
+++ b/20240711/smart-pointers-03.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  cout << *hello << endl;
+  delete hello;
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Variable wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-04.cpp b/20240711/smart-pointers-04.cpp
new file mode 100644
index 0000000..4184ff5
--- /dev/null
+++ b/20240711/smart-pointers-04.cpp
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  printf ("hello = 0x%016zx\n", (size_t) hello);
+  cout << *hello << endl;
+  delete hello;
+  printf ("hello = 0x%016zx\n", (size_t) hello);
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Variable wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-05.cpp b/20240711/smart-pointers-05.cpp
new file mode 100644
index 0000000..188c175
--- /dev/null
+++ b/20240711/smart-pointers-05.cpp
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  printf ("hello = 0x%016zx\n", (size_t) hello);
+  cout << *hello << endl;
+  delete hello;
+  hello = NULL;
+  printf ("hello = 0x%016zx\n", (size_t) hello);
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Variable wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-06.cpp b/20240711/smart-pointers-06.cpp
new file mode 100644
index 0000000..e924ba3
--- /dev/null
+++ b/20240711/smart-pointers-06.cpp
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello;
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Kein gültiger Zeiger." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-07.cpp b/20240711/smart-pointers-07.cpp
new file mode 100644
index 0000000..f70a5b3
--- /dev/null
+++ b/20240711/smart-pointers-07.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+int main ()
+{
+  shared_ptr <string> hello = new string ("Hello, world!");
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Kein gültiger Zeiger." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-08.cpp b/20240711/smart-pointers-08.cpp
new file mode 100644
index 0000000..46bd15c
--- /dev/null
+++ b/20240711/smart-pointers-08.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+int main ()
+{
+  shared_ptr <string> hello (new string ("Hello, world!"));
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Kein gültiger Zeiger." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-09.cpp b/20240711/smart-pointers-09.cpp
new file mode 100644
index 0000000..83b34a2
--- /dev/null
+++ b/20240711/smart-pointers-09.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+int main ()
+{
+  shared_ptr <string> hello ("Hello, world!");
+  if (hello)
+    cout << *hello << endl;
+  else
+    cout << "Kein gültiger Zeiger." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-10.cpp b/20240711/smart-pointers-10.cpp
new file mode 100644
index 0000000..33ef969
--- /dev/null
+++ b/20240711/smart-pointers-10.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+int main ()
+{
+  shared_ptr <string> hello2;
+  if (hello2)
+    cout << *hello2 << endl;
+  else
+    cout << "(String noch nicht vorhanden)" << endl;
+  if (1)
+    {
+      shared_ptr <string> hello (new string ("Hello, world!"));
+      cout << *hello << endl;
+      hello2 = hello;
+    }
+  cout << *hello2 << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-11.cpp b/20240711/smart-pointers-11.cpp
new file mode 100644
index 0000000..8031683
--- /dev/null
+++ b/20240711/smart-pointers-11.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+struct container
+{
+  string content;
+  container (const char *s)
+  {
+    content = s;
+  }
+  shared_ptr <container> next;
+};
+
+int main ()
+{
+  shared_ptr <container> hello1 (new container ("Hello,"));
+  shared_ptr <container> hello2 (new container ("world!"));
+  cout << hello1->content << " " << hello2->content << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-12.cpp b/20240711/smart-pointers-12.cpp
new file mode 100644
index 0000000..b80cff7
--- /dev/null
+++ b/20240711/smart-pointers-12.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+struct container
+{
+  string content;
+  container (const char *s)
+  {
+    content = s;
+  }
+  shared_ptr <container> next;
+};
+
+int main ()
+{
+  shared_ptr <container> hello1 (new container ("Hello,"));
+  shared_ptr <container> hello2 (new container ("world!"));
+  hello1->next = hello2;
+  hello2->next = hello1;
+  cout << hello1->content << " " << hello2->content << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-13.cpp b/20240711/smart-pointers-13.cpp
new file mode 100644
index 0000000..f044de4
--- /dev/null
+++ b/20240711/smart-pointers-13.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+struct container
+{
+  string content;
+  container (const char *s)
+  {
+    content = s;
+  }
+  ~container ()
+  {
+    cout << "Bye: " << content << endl;
+  }
+  shared_ptr <container> next;
+};
+
+int main ()
+{
+  shared_ptr <container> hello1 (new container ("Hello,"));
+  shared_ptr <container> hello2 (new container ("world!"));
+//  hello1->next = hello2;
+//  hello2->next = hello1;
+  cout << hello1->content << " " << hello2->content << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-14.cpp b/20240711/smart-pointers-14.cpp
new file mode 100644
index 0000000..8d11a2d
--- /dev/null
+++ b/20240711/smart-pointers-14.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+
+struct container
+{
+  string content;
+  container (const char *s)
+  {
+    content = s;
+  }
+  ~container ()
+  {
+    cout << "Bye: " << content << endl;
+  }
+  shared_ptr <container> next;
+};
+
+int main ()
+{
+  shared_ptr <container> hello1 (new container ("Hello,"));
+  shared_ptr <container> hello2 (new container ("world!"));
+  hello1->next = hello2;
+  hello2->next = hello1;
+  cout << hello1->content << " " << hello2->content << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-15.cpp b/20240711/smart-pointers-15.cpp
new file mode 100644
index 0000000..8a91989
--- /dev/null
+++ b/20240711/smart-pointers-15.cpp
@@ -0,0 +1,33 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+struct container
+{
+  string content;
+  container (const char *s)
+  {
+    content = s;
+  }
+  ~container ()
+  {
+    cout << "Bye: " << content << endl;
+  }
+  weak_ptr <container> next;
+};
+
+int main ()
+{
+  shared_ptr <container> hello1 (new container ("Hello,"));
+  shared_ptr <container> hello2 (new container ("world!"));
+  hello1->next = hello2;
+  hello2->next = hello1;
+  cout << hello1->content << " " << hello2->content << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-16.cpp b/20240711/smart-pointers-16.cpp
new file mode 100644
index 0000000..dcf942e
--- /dev/null
+++ b/20240711/smart-pointers-16.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+int main ()
+{
+  weak_ptr <string> p;
+  shared_ptr <string> hello (new string ("Hello, world!"));
+  p = hello;
+  cout << *p << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-17.cpp b/20240711/smart-pointers-17.cpp
new file mode 100644
index 0000000..f9d845c
--- /dev/null
+++ b/20240711/smart-pointers-17.cpp
@@ -0,0 +1,19 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+int main ()
+{
+  weak_ptr <string> p;
+  shared_ptr <string> hello (new string ("Hello, world!"));
+  p = hello;
+  shared_ptr <string> q = p.lock ();
+  cout << *q << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-18.cpp b/20240711/smart-pointers-18.cpp
new file mode 100644
index 0000000..d9f3327
--- /dev/null
+++ b/20240711/smart-pointers-18.cpp
@@ -0,0 +1,16 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *p;
+  string *hello = new string ("Hello, world!");
+  p = hello;
+  string *q = p;
+  cout << *q << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-19.cpp b/20240711/smart-pointers-19.cpp
new file mode 100644
index 0000000..27c4e63
--- /dev/null
+++ b/20240711/smart-pointers-19.cpp
@@ -0,0 +1,22 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+int main ()
+{
+  weak_ptr <string> p;
+  shared_ptr <string> hello (new string ("Hello, world!"));
+  p = hello;
+  shared_ptr <string> q = p.lock ();
+  if (q)
+    cout << *q << endl;
+  else
+    cout << "Zeiger wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-20.cpp b/20240711/smart-pointers-20.cpp
new file mode 100644
index 0000000..50e95cf
--- /dev/null
+++ b/20240711/smart-pointers-20.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+int main ()
+{
+  weak_ptr <string> p;
+  if (1)
+    {
+      shared_ptr <string> hello (new string ("Hello, world!"));
+      p = hello;
+    }
+  shared_ptr <string> q = p.lock ();
+  if (q)
+    cout << *q << endl;
+  else
+    cout << "Zeiger wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-21.cpp b/20240711/smart-pointers-21.cpp
new file mode 100644
index 0000000..5699eae
--- /dev/null
+++ b/20240711/smart-pointers-21.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::shared_ptr;
+using std::weak_ptr;
+
+int main ()
+{
+  weak_ptr <string> p;
+  shared_ptr <string> q;
+  if (1)
+    {
+      shared_ptr <string> hello (new string ("Hello, world!"));
+      p = hello;
+      q = p.lock ();
+    }
+  if (q)
+    cout << *q << endl;
+  else
+    cout << "Zeiger wurde bereits freigegeben." << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-22.cpp b/20240711/smart-pointers-22.cpp
new file mode 100644
index 0000000..c8688a6
--- /dev/null
+++ b/20240711/smart-pointers-22.cpp
@@ -0,0 +1,19 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  string *storage = NULL;
+
+  storage = hello;
+  hello = NULL;
+  hello = new string ("Hallo, Welt!");
+
+  cout << *storage << endl;
+  return 0;
+}
diff --git a/20240711/smart-pointers-23.cpp b/20240711/smart-pointers-23.cpp
new file mode 100644
index 0000000..a9f8fd8
--- /dev/null
+++ b/20240711/smart-pointers-23.cpp
@@ -0,0 +1,24 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  string *storage = NULL;
+
+  storage = hello;
+  hello = NULL;
+
+  cout << *storage << endl;
+
+  if (hello)
+    delete hello;
+  if (storage)
+    delete storage;
+
+  return 0;
+}
diff --git a/20240711/smart-pointers-24.cpp b/20240711/smart-pointers-24.cpp
new file mode 100644
index 0000000..a3000f8
--- /dev/null
+++ b/20240711/smart-pointers-24.cpp
@@ -0,0 +1,24 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  string *storage = NULL;
+
+  storage = hello;
+//  hello = NULL;
+
+  cout << *storage << endl;
+
+  if (hello)
+    delete hello;
+  if (storage)
+    delete storage;
+
+  return 0;
+}
diff --git a/20240711/smart-pointers-25.cpp b/20240711/smart-pointers-25.cpp
new file mode 100644
index 0000000..5ade0eb
--- /dev/null
+++ b/20240711/smart-pointers-25.cpp
@@ -0,0 +1,30 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+int main ()
+{
+  string *hello = new string ("Hello, world!");
+  string *storage = NULL;
+
+  storage = hello;
+
+  // Jetzt kommt ein anderer Thread und macht:
+
+  if (hello)
+    delete hello;
+
+  // Jetzt sind wir wieder im ursprünglichen Thread.
+
+  hello = NULL;
+
+  cout << *storage << endl;
+
+  if (storage)
+    delete storage;
+
+  return 0;
+}
diff --git a/20240711/smart-pointers-26.cpp b/20240711/smart-pointers-26.cpp
new file mode 100644
index 0000000..db13d36
--- /dev/null
+++ b/20240711/smart-pointers-26.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::unique_ptr;
+
+int main ()
+{
+  unique_ptr <string> hello (new string ("Hello, world!"));
+  unique_ptr <string> storage;
+
+  storage = hello;
+
+  // Jetzt kommt ein anderer Thread und macht:
+
+  if (hello)
+    delete hello;
+
+  // Jetzt sind wir wieder im ursprünglichen Thread.
+
+  hello = NULL;
+
+  cout << *storage << endl;
+
+  if (storage)
+    delete storage;
+
+  return 0;
+}
diff --git a/20240711/smart-pointers-27.cpp b/20240711/smart-pointers-27.cpp
new file mode 100644
index 0000000..85d4d7d
--- /dev/null
+++ b/20240711/smart-pointers-27.cpp
@@ -0,0 +1,30 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::unique_ptr;
+
+int main ()
+{
+  unique_ptr <string> hello (new string ("Hello, world!"));
+  unique_ptr <string> storage;
+
+  storage = move (hello);  // setzt gleichzeitig auf NULL
+
+  // Jetzt kommt ein anderer Thread und macht:
+
+  if (hello)
+    delete hello;
+
+  // Jetzt sind wir wieder im ursprünglichen Thread.
+
+  cout << *storage << endl;
+
+  if (storage)
+    delete storage;
+
+  return 0;
+}
diff --git a/20240711/smart-pointers-28.cpp b/20240711/smart-pointers-28.cpp
new file mode 100644
index 0000000..4abf8d4
--- /dev/null
+++ b/20240711/smart-pointers-28.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <string>
+#include <memory>
+
+using std::cout;
+using std::endl;
+using std::string;
+using std::unique_ptr;
+
+int main ()
+{
+  unique_ptr <string> hello (new string ("Hello, world!"));
+  unique_ptr <string> storage;
+
+  storage = move (hello);  // setzt gleichzeitig auf NULL
+
+  // Ein anderer Thread hat keine Chance mehr, sich zwischen die Zeiger-Zuweisung
+  // und das Auf-NULL-Setzen zu schieben.
+
+  cout << *storage << endl;
+
+  // if (storage)
+  //   delete storage;   --> geschieht automatisch
+
+  return 0;
+}
diff --git a/20240711/templates-01.cpp b/20240711/templates-01.cpp
new file mode 100644
index 0000000..b6d013e
--- /dev/null
+++ b/20240711/templates-01.cpp
@@ -0,0 +1,23 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+void print (int x)
+{
+  cout << x << endl;
+}
+
+void print (string x)
+{
+  cout << x << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  return 0;
+}
diff --git a/20240711/templates-02.cpp b/20240711/templates-02.cpp
new file mode 100644
index 0000000..191e300
--- /dev/null
+++ b/20240711/templates-02.cpp
@@ -0,0 +1,19 @@
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  return 0;
+}
diff --git a/20240711/templates-03.cpp b/20240711/templates-03.cpp
new file mode 100644
index 0000000..6166f19
--- /dev/null
+++ b/20240711/templates-03.cpp
@@ -0,0 +1,17 @@
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  return 0;
+}
diff --git a/20240711/templates-04.cpp b/20240711/templates-04.cpp
new file mode 100644
index 0000000..4fca671
--- /dev/null
+++ b/20240711/templates-04.cpp
@@ -0,0 +1,24 @@
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+class bla
+{
+  int content;
+};
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  bla blubb;
+  print (blubb);
+  return 0;
+}
diff --git a/20240711/templates-07.cpp b/20240711/templates-07.cpp
new file mode 100644
index 0000000..4279b33
--- /dev/null
+++ b/20240711/templates-07.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+class bla
+{
+public:
+  int content;
+  bla (int x):
+    content (x)
+  {
+  }
+};
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+template <>
+void print (bla x)
+{
+  cout << x.content << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  bla blubb (137);
+  print (blubb);
+  return 0;
+}
diff --git a/20240711/templates-08.cpp b/20240711/templates-08.cpp
new file mode 100644
index 0000000..a0c3a29
--- /dev/null
+++ b/20240711/templates-08.cpp
@@ -0,0 +1,41 @@
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+class bla
+{
+public:
+  int content;
+  bla (int x):
+    content (x)
+  {
+  }
+};
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+template <>
+void print (int x)
+{
+  cout << "Die Antwort lautet: " << x << endl;
+}
+
+template <>
+void print (bla x)
+{
+  cout << x.content << endl;
+}
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  bla blubb (137);
+  print (blubb);
+  return 0;
+}
diff --git a/20240711/templates-09.cpp b/20240711/templates-09.cpp
new file mode 100644
index 0000000..2606961
--- /dev/null
+++ b/20240711/templates-09.cpp
@@ -0,0 +1,41 @@
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+class bla
+{
+public:
+  int content;
+  bla (int x):
+    content (x)
+  {
+  }
+};
+
+template <typename t>
+void print (t x)
+{
+  cout << x << endl;
+}
+
+template <>
+void print (int x)
+{
+  cout << "Die Antwort lautet: " << x << endl;
+}
+
+template <>
+void print (bla x)
+{
+  cout << x << endl;  // Fehler wird erkannt, obwohl nicht instantiiert.
+}                     // Dies ist nicht immer der Fall.
+
+int main ()
+{
+  print (42);
+  print ("Hello, world!");
+  bla blubb (137);
+//  print (blubb);
+  return 0;
+}
diff --git a/20240711/templates-10.cpp b/20240711/templates-10.cpp
new file mode 100644
index 0000000..88fc5a1
--- /dev/null
+++ b/20240711/templates-10.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (list *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  return 0;
+}
diff --git a/20240711/templates-11.cpp b/20240711/templates-11.cpp
new file mode 100644
index 0000000..57aec67
--- /dev/null
+++ b/20240711/templates-11.cpp
@@ -0,0 +1,56 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (list *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  s.output ();
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  i.output ();
+  return 0;
+}
diff --git a/20240711/templates-12.cpp b/20240711/templates-12.cpp
new file mode 100644
index 0000000..e5d6547
--- /dev/null
+++ b/20240711/templates-12.cpp
@@ -0,0 +1,56 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (node *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  s.output ();
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  i.output ();
+  return 0;
+}
diff --git a/20240711/templates-13.cpp b/20240711/templates-13.cpp
new file mode 100644
index 0000000..3577e9f
--- /dev/null
+++ b/20240711/templates-13.cpp
@@ -0,0 +1,61 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (node *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+void blabla (int x)
+{
+  huddeldibuddel (wuppdich);
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  s.output ();
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  i.output ();
+  return 0;
+}
diff --git a/20240711/templates-14.cpp b/20240711/templates-14.cpp
new file mode 100644
index 0000000..b42e532
--- /dev/null
+++ b/20240711/templates-14.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (huddeldibuddel *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  return 0;
+}
diff --git a/20240711/templates-15.cpp b/20240711/templates-15.cpp
new file mode 100644
index 0000000..e8296e0
--- /dev/null
+++ b/20240711/templates-15.cpp
@@ -0,0 +1,54 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (char *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  return 0;
+}
diff --git a/20240711/templates-16.cpp b/20240711/templates-16.cpp
new file mode 100644
index 0000000..d023eee
--- /dev/null
+++ b/20240711/templates-16.cpp
@@ -0,0 +1,64 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+template <typename argtype>
+class list
+{
+  struct node
+  {
+    argtype content;
+    node *next;
+  };
+  node *root;
+public:
+  list ();
+  void insert (argtype x);
+  void output ();
+};
+
+template <typename argtype>
+list <argtype>::list ()
+{
+  root = NULL;
+}
+
+template <typename argtype>
+void list <argtype>::insert (argtype x)
+{
+  node *n = new node;
+  n->content = x;
+  n->next = root;
+  root = n;
+}
+
+template <typename argtype>
+void list <argtype>::output ()
+{
+  for (node *p = root; p; p = p->next)
+    cout << p->content << endl;
+}
+
+template <>
+void list <int>::output ()
+{
+  for (node *p = root; p; p = p->next)
+    cout << p->content << " ";
+  cout << endl;
+}
+
+int main ()
+{
+  list <string> s;
+  s.insert ("one");
+  s.insert ("two");
+  s.insert ("three");
+  s.output ();
+  list <int> i;
+  i.insert (1);
+  i.insert (2);
+  i.insert (3);
+  i.output ();
+  return 0;
+}
diff --git a/20240711/type-conversions-01.cpp b/20240711/type-conversions-01.cpp
new file mode 100644
index 0000000..f861606
--- /dev/null
+++ b/20240711/type-conversions-01.cpp
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+
+int main ()
+{
+  const char *hello = "Hello, world!";
+  uint64_t address = (uint64_t) hello;
+  printf ("%" PRIx64 "\n", address);
+  return 0;
+}
diff --git a/20240711/type-conversions-02.cpp b/20240711/type-conversions-02.cpp
new file mode 100644
index 0000000..be702cc
--- /dev/null
+++ b/20240711/type-conversions-02.cpp
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+
+int main ()
+{
+  const char *hello = "Hello, world!";
+  uint64_t address = uint64_t (hello);
+  printf ("%" PRIx64 "\n", address);
+  return 0;
+}
diff --git a/20240711/type-conversions-03.cpp b/20240711/type-conversions-03.cpp
new file mode 100644
index 0000000..3457293
--- /dev/null
+++ b/20240711/type-conversions-03.cpp
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  p->print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-04.cpp b/20240711/type-conversions-04.cpp
new file mode 100644
index 0000000..e21b9c1
--- /dev/null
+++ b/20240711/type-conversions-04.cpp
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+struct TBase
+{
+  void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  p->print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-05.cpp b/20240711/type-conversions-05.cpp
new file mode 100644
index 0000000..ea77aec
--- /dev/null
+++ b/20240711/type-conversions-05.cpp
@@ -0,0 +1,25 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  THello *q = p;
+  q->print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-06.cpp b/20240711/type-conversions-06.cpp
new file mode 100644
index 0000000..5e96913
--- /dev/null
+++ b/20240711/type-conversions-06.cpp
@@ -0,0 +1,25 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  THello *q = dynamic_cast <THello *> (p);
+  q->print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-07.cpp b/20240711/type-conversions-07.cpp
new file mode 100644
index 0000000..7454be7
--- /dev/null
+++ b/20240711/type-conversions-07.cpp
@@ -0,0 +1,25 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new TBase;
+  THello *q = dynamic_cast <THello *> (p);
+  q->print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-08.cpp b/20240711/type-conversions-08.cpp
new file mode 100644
index 0000000..c01ddcc
--- /dev/null
+++ b/20240711/type-conversions-08.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new TBase;
+  THello *q = dynamic_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-09.cpp b/20240711/type-conversions-09.cpp
new file mode 100644
index 0000000..4aebad7
--- /dev/null
+++ b/20240711/type-conversions-09.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  THello *q = dynamic_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-10.cpp b/20240711/type-conversions-10.cpp
new file mode 100644
index 0000000..416aa6e
--- /dev/null
+++ b/20240711/type-conversions-10.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new THello;
+  THello *q = static_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-11.cpp b/20240711/type-conversions-11.cpp
new file mode 100644
index 0000000..a92b6bb
--- /dev/null
+++ b/20240711/type-conversions-11.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new TBase;
+  THello *q = static_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-11a.cpp b/20240711/type-conversions-11a.cpp
new file mode 100644
index 0000000..2099f06
--- /dev/null
+++ b/20240711/type-conversions-11a.cpp
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+struct TBase
+{
+  void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  TBase *p = new TBase;
+  THello *q = static_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-11b.cpp b/20240711/type-conversions-11b.cpp
new file mode 100644
index 0000000..04c2ed4
--- /dev/null
+++ b/20240711/type-conversions-11b.cpp
@@ -0,0 +1,33 @@
+#include <stdio.h>
+
+struct TBase
+{
+  void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+  THello ()
+  {
+    content = "Hello, world!\n";
+  }
+  void print ()
+  {
+    printf (content);
+  }
+};
+
+int main ()
+{
+  TBase *p = new TBase;
+  THello *q = static_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-12.cpp b/20240711/type-conversions-12.cpp
new file mode 100644
index 0000000..bce43d1
--- /dev/null
+++ b/20240711/type-conversions-12.cpp
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  int answer = 13;
+  int *p = &answer;
+  THello *q = static_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-12a.cpp b/20240711/type-conversions-12a.cpp
new file mode 100644
index 0000000..8c76b2b
--- /dev/null
+++ b/20240711/type-conversions-12a.cpp
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  int answer = 13;
+  int *p = &answer;
+  THello *q = dynamic_cast <THello *> (p);
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-13.cpp b/20240711/type-conversions-13.cpp
new file mode 100644
index 0000000..50a04d3
--- /dev/null
+++ b/20240711/type-conversions-13.cpp
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  virtual void print ()
+  {
+    printf ("Hello, world!\n");
+  }
+};
+
+int main ()
+{
+  int answer = 13;
+  int *p = &answer;
+  THello *q = (THello *) p;
+  if (q)
+    q->print ();
+  else
+    printf ("Typumwandlung fehlgeschlagen.\n");
+  return 0;
+}
diff --git a/20240711/type-conversions-14.cpp b/20240711/type-conversions-14.cpp
new file mode 100644
index 0000000..a9ed970
--- /dev/null
+++ b/20240711/type-conversions-14.cpp
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+int main ()
+{
+  THello h = "Hello, world!";
+  h.print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-15.cpp b/20240711/type-conversions-15.cpp
new file mode 100644
index 0000000..17fa8b5
--- /dev/null
+++ b/20240711/type-conversions-15.cpp
@@ -0,0 +1,37 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  THello (const TBase &b)
+  {
+    content = "(Base)";
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+int main ()
+{
+  TBase b;
+  THello h = b;
+  h.print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-16.cpp b/20240711/type-conversions-16.cpp
new file mode 100644
index 0000000..761cda5
--- /dev/null
+++ b/20240711/type-conversions-16.cpp
@@ -0,0 +1,37 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  explicit THello (const TBase &b)
+  {
+    content = "(Base)";
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+int main ()
+{
+  TBase b;
+  THello h = b;
+  h.print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-17.cpp b/20240711/type-conversions-17.cpp
new file mode 100644
index 0000000..7f51b7f
--- /dev/null
+++ b/20240711/type-conversions-17.cpp
@@ -0,0 +1,37 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  explicit THello (const TBase &b)
+  {
+    content = "(Base)";
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+int main ()
+{
+  TBase b;
+  THello h (b);
+  h.print ();
+  return 0;
+}
diff --git a/20240711/type-conversions-18.cpp b/20240711/type-conversions-18.cpp
new file mode 100644
index 0000000..bfab7be
--- /dev/null
+++ b/20240711/type-conversions-18.cpp
@@ -0,0 +1,41 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  THello (const TBase &b)
+  {
+    content = "(Base)";
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+void print_it (const THello &h)
+{
+  printf ("%s\n", h.content);
+}
+
+int main ()
+{
+  TBase b;
+  print_it (b);
+  return 0;
+}
diff --git a/20240711/type-conversions-19.cpp b/20240711/type-conversions-19.cpp
new file mode 100644
index 0000000..32fe3fb
--- /dev/null
+++ b/20240711/type-conversions-19.cpp
@@ -0,0 +1,41 @@
+#include <stdio.h>
+
+struct TBase
+{
+  virtual void print ()
+  {
+    printf ("(Base)\n");
+  }
+};
+
+struct THello: public TBase
+{
+  const char *content;
+
+  THello (const char *s)
+  {
+    content = s;
+  }
+
+  explicit THello (const TBase &b)
+  {
+    content = "(Base)";
+  }
+
+  virtual void print ()
+  {
+    printf ("%s\n", content);
+  }
+};
+
+void print_it (const THello &h)
+{
+  printf ("%s\n", h.content);
+}
+
+int main ()
+{
+  TBase b;
+  print_it (b);
+  return 0;
+}
diff --git a/20240711/type-conversions-20.cpp b/20240711/type-conversions-20.cpp
new file mode 100644
index 0000000..cc5055d
--- /dev/null
+++ b/20240711/type-conversions-20.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  int answer = 1117;
+  int *p = &answer;
+  printf ("The address of the answer is: %zx\n", p);
+  return 0;
+}
diff --git a/20240711/type-conversions-21.cpp b/20240711/type-conversions-21.cpp
new file mode 100644
index 0000000..48cbdb9
--- /dev/null
+++ b/20240711/type-conversions-21.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  int answer = 1117;
+  int *p = &answer;
+  printf ("The address of the answer is: %zx\n", (size_t) p);
+  return 0;
+}
diff --git a/20240711/type-conversions-22.cpp b/20240711/type-conversions-22.cpp
new file mode 100644
index 0000000..592c47f
--- /dev/null
+++ b/20240711/type-conversions-22.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  int answer = 1117;
+  int *p = &answer;
+  printf ("The address of the answer is: %zx\n", reinterpret_cast <size_t> (p));
+  return 0;
+}
diff --git a/20240711/type-conversions-23.cpp b/20240711/type-conversions-23.cpp
new file mode 100644
index 0000000..45d2aeb
--- /dev/null
+++ b/20240711/type-conversions-23.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  const char* hello = "Hello, world!";
+  char *h = hello;
+  printf ("%s\n", h);
+  return 0;
+}
diff --git a/20240711/type-conversions-24.cpp b/20240711/type-conversions-24.cpp
new file mode 100644
index 0000000..889b4d5
--- /dev/null
+++ b/20240711/type-conversions-24.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  const char* hello = "Hello, world!";
+  char *h = (char *) hello;
+  printf ("%s\n", h);
+  return 0;
+}
diff --git a/20240711/type-conversions-25.cpp b/20240711/type-conversions-25.cpp
new file mode 100644
index 0000000..fdb8227
--- /dev/null
+++ b/20240711/type-conversions-25.cpp
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main ()
+{
+  const char* hello = "Hello, world!";
+  char *h = const_cast <char *> (hello);
+  printf ("%s\n", h);
+  return 0;
+}
-- 
GitLab