diff --git a/20220414/ad-20220414.pdf b/20220414/ad-20220414.pdf
index fd26cb279064c7fbdf3676a6f1bb0739f017a1e1..6f15ed8bcdd2dcb84de7eab2aac5676fdb84348e 100644
Binary files a/20220414/ad-20220414.pdf and b/20220414/ad-20220414.pdf differ
diff --git a/20220414/ad-20220414.tex b/20220414/ad-20220414.tex
index 80cf1edcd18a563224b0138f62493579f7ba72ca..8da89c90843f61c4dd9d812d11646bc80a12cab8 100644
--- a/20220414/ad-20220414.tex
+++ b/20220414/ad-20220414.tex
@@ -200,16 +200,16 @@
   \begin{lstlisting}
       int prime[5] = { 2, 3, 5, 7, 11 };
       for (int *p = prime; p != prime + 5; p++)
-        cout << *p << endl;
+        std::cout << *p << std::endl;
   \end{lstlisting}
 
   \bigskip
   Iterator als Verallgemeinerung:
   \medskip
   \begin{lstlisting}
-      array <int, 5> prime = { { 2, 3, 5, 7, 11 } };
-      for (array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++)
-        cout << *p << endl;
+      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;
   \end{lstlisting}
 \end{frame}
 
diff --git a/20220421/ad-20220421.pdf b/20220421/ad-20220421.pdf
index 970f517855668102bd369661c5ceb55320787319..6bbb30cd1be57c9186477f98f24da3fb9b60d3f0 100644
Binary files a/20220421/ad-20220421.pdf and b/20220421/ad-20220421.pdf differ
diff --git a/20220421/ad-20220421.tex b/20220421/ad-20220421.tex
index fa90ef5b39d33c4a7384020f0967ab70c3a6f13d..497c6de17c04a417f0081efbc86abd20112a150b 100644
--- a/20220421/ad-20220421.tex
+++ b/20220421/ad-20220421.tex
@@ -151,22 +151,45 @@
   \showsection
   \showsubsection
 
-  Pointer-Arithmetik:
+  \begin{onlyenv}<1>
+    Pointer-Arithmetik:
+    \medskip
+    \begin{lstlisting}[gobble=6]
+        int prime[5] = { 2, 3, 5, 7, 11 };
+        for (int *p = prime; p != prime + 5; p++)
+          std::cout << *p << std::endl;
+    \end{lstlisting}
+
+    \bigskip
+  \end{onlyenv}
+
+  Iterator als Verallgemeinerung:
   \medskip
   \begin{lstlisting}
-      int prime[5] = { 2, 3, 5, 7, 11 };
-      for (int *p = prime; p != prime + 5; p++)
-        cout << *p << endl;
+      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;
   \end{lstlisting}
 
   \bigskip
-  Iterator als Verallgemeinerung:
+  Mit \lstinline{auto}-Datentyp:
   \medskip
   \begin{lstlisting}
-      array <int, 5> prime = { { 2, 3, 5, 7, 11 } };
-      for (array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++)
-        cout << *p << endl;
+      std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } };
+      for (auto p = prime.begin (); p != prime.end (); p++)
+        std::cout << *p << std::endl;
   \end{lstlisting}
+
+  \begin{onlyenv}<2->
+    \bigskip
+    Mit Doppelpunkt-Syntax:
+    \medskip
+    \begin{lstlisting}[gobble=6]
+        std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } };
+        for (auto p : prime)
+          std::cout << p << std::endl;
+    \end{lstlisting}
+  \end{onlyenv}
 \end{frame}
 
 \subsection{Exceptions}
diff --git a/20220421/sets-1.cpp b/20220421/sets-1.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..27278fa2c25ba084bcd10923f2ff95c92dc54cd2
--- /dev/null
+++ b/20220421/sets-1.cpp
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  std::set <int> prime = { { 2, 3, 5, 7, 11 }};
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-10.cpp b/20220421/sets-10.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..49cbf5fb5941e22fa92c07f85fb921384874facd
--- /dev/null
+++ b/20220421/sets-10.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, bool (*) (int, int)> prime (less);
+
+  // "bool (*less) (int a, int b)"
+  // wäre eine Variable "less" vom Typ "Zeiger auf eine Funktion,
+  // die 2 ints erwartet und ein bool zurückgibt".
+  // Um nur den Typen dieses Zeigers zu bekommen, lassen wir den
+  // Bezeichner "less" für die Variable weg.
+
+  // Nur "bool *less (int a, int b)"
+  // wäre eine Funktion "less", die einen Zeiger auf bool zurückgibt
+  // und 2 ints als Parameter erwartet.
+
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-11.cpp b/20220421/sets-11.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0e734833ed98fc743a943e413b06aa8b522933e7
--- /dev/null
+++ b/20220421/sets-11.cpp
@@ -0,0 +1,20 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, bool (*) (int, int)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-12.cpp b/20220421/sets-12.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dbd9d09ecaf7fce98534f14e8a7e87abbe9cbbbe
--- /dev/null
+++ b/20220421/sets-12.cpp
@@ -0,0 +1,16 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  auto less = [] (int a, int b) { return a > b; };
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-13.cpp b/20220421/sets-13.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe60b8be43cfb34a8c7796b52cec1ed6caf69c40
--- /dev/null
+++ b/20220421/sets-13.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-14.cpp b/20220421/sets-14.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ce6e128cb9f160aa6672d79a092f4d562d60ed9c
--- /dev/null
+++ b/20220421/sets-14.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-15.cpp b/20220421/sets-15.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..26233018b86c7a67230b18f24f211422cbd48bd3
--- /dev/null
+++ b/20220421/sets-15.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [fwd] (int a, int b)
+  {
+    fwd = !fwd;
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-16.cpp b/20220421/sets-16.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ab86f9cf4aeb6e06620dc10916d5ffda2d2a6958
--- /dev/null
+++ b/20220421/sets-16.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [&fwd] (int a, int b)
+  {
+    fwd = !fwd;
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-17.cpp b/20220421/sets-17.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..06fd778e71c8eb135a88cff16f3a109ad08839ae
--- /dev/null
+++ b/20220421/sets-17.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  fwd = 0;
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-18.cpp b/20220421/sets-18.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..92537b799f6f5259622aae566650ffa15fc5e414
--- /dev/null
+++ b/20220421/sets-18.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-19.cpp b/20220421/sets-19.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fb81394c27ef553251f802c2cc6e84426e9b640a
--- /dev/null
+++ b/20220421/sets-19.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [&fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-2.cpp b/20220421/sets-2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..330227bfbfea1920f2100098cac8899c49817f73
--- /dev/null
+++ b/20220421/sets-2.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  std::set <int> prime = { { 2, 3, 7, 11, 13, 17, 19 }};
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-20.cpp b/20220421/sets-20.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..08a1324d6fa13e8a642649ae181601316fd93eaf
--- /dev/null
+++ b/20220421/sets-20.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [const &fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-21.cpp b/20220421/sets-21.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7923867a04f2972064e65ee64d9156b61201a40d
--- /dev/null
+++ b/20220421/sets-21.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+
+  auto less = [&const fwd] (int a, int b)
+  {
+    if (fwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-22.cpp b/20220421/sets-22.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c00ba7cae5c587830318eb682870a0c0589468ba
--- /dev/null
+++ b/20220421/sets-22.cpp
@@ -0,0 +1,27 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+  const bool &cfwd = fwd;
+
+  auto less = [&cfwd] (int a, int b)
+  {
+    if (cfwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-23.cpp b/20220421/sets-23.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dc7a86b5363d40a347e65e5ed0ae286acb7d4925
--- /dev/null
+++ b/20220421/sets-23.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  bool fwd = 1;
+  const bool &cfwd = fwd;
+
+  auto less = [&cfwd] (int a, int b)
+  {
+    cfwd = !cfwd;
+    if (cfwd)
+      return a < b;
+    else
+      return a > b;
+  };
+
+  std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  fwd = 0;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-24.cpp b/20220421/sets-24.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b19ea745e479fd38be4d3c56f95dfbd1c5be36c6
--- /dev/null
+++ b/20220421/sets-24.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <set>
+
+bool fwd = 1;
+
+bool less (int a, int b)
+{
+  if (fwd)
+    return a < b;
+  else
+    return a > b;
+}
+
+int main ()
+{
+  fwd = 0;
+  std::set <int, decltype (less)*> prime ({ 2, 3, 7, 11, 13 }, less);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-3.cpp b/20220421/sets-3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ea8ca648d457c26cb820d7f8e71269d0c1c457b4
--- /dev/null
+++ b/20220421/sets-3.cpp
@@ -0,0 +1,21 @@
+#include <iostream>
+#include <set>
+
+int main ()
+{
+  auto less = [] (int a, int b) { return a > b; };
+  std::set <int, decltype (less)> prime (less);
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-4.cpp b/20220421/sets-4.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5a570fd45863c48f8161b6f4f8539699687947e3
--- /dev/null
+++ b/20220421/sets-4.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, decltype (less)*> prime (less);
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-5.cpp b/20220421/sets-5.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..df0e25fd02c1d76e3eb043c1471a278d31f6d31a
--- /dev/null
+++ b/20220421/sets-5.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, decltype (&less)> prime (&less);
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-6.cpp b/20220421/sets-6.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d7b788325e0afc13a78bdc9a27b7a513463d57b6
--- /dev/null
+++ b/20220421/sets-6.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, &less> prime (&less);
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-7.cpp b/20220421/sets-7.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bbae6b37e19436c4bf2e677e01ad2cc94402d146
--- /dev/null
+++ b/20220421/sets-7.cpp
@@ -0,0 +1,25 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, decltype (&less)> prime (less);
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-8.cpp b/20220421/sets-8.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fe5819174bfac778efcf1f8ac2d21a49c4b8c656
--- /dev/null
+++ b/20220421/sets-8.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, bool (*) (int a, int b)> prime (less);
+
+  // "bool (*less) (int a, int b)"
+  // wäre eine Variable "less" vom Typ "Zeiger auf eine Funktion,
+  // die 2 ints erwartet und ein bool zurückgibt".
+  // Um nur den Typen dieses Zeigers zu bekommen, lassen wir den
+  // Bezeichner "less" für die Variable weg.
+
+  // Nur "bool *less (int a, int b)"
+  // wäre eine Funktion "less", die einen Zeiger auf bool zurückgibt
+  // und 2 ints als Parameter erwartet.
+
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}
diff --git a/20220421/sets-9.cpp b/20220421/sets-9.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6ccabde6a7b2c306012d7e679195e172bd46b1ab
--- /dev/null
+++ b/20220421/sets-9.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <set>
+
+bool less (int a, int b)
+{
+  return a > b;
+}
+
+int main ()
+{
+  std::set <int, bool * (int a, int b)> prime (less);
+
+  // Falsch
+
+  prime.insert (2);
+  prime.insert (3);
+  prime.insert (7);
+  prime.insert (11);
+  prime.insert (13);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  prime.insert (5);
+  for (auto p : prime)
+    std::cout << p << " ";
+  std::cout << std::endl;
+  return 0;
+}