Squashed 'third_party/boostorg/preprocessor/' content from commit 56090c5

Change-Id: I8c0a13225778c3751a35945439d5304bd9e639ef
git-subtree-dir: third_party/boostorg/preprocessor
git-subtree-split: 56090c56b5c78418b6dbe8c3c2ba576395152f83
diff --git a/doc/examples/catch_builtin.cpp b/doc/examples/catch_builtin.cpp
new file mode 100644
index 0000000..27a27a0
--- /dev/null
+++ b/doc/examples/catch_builtin.cpp
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2002
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * Distributed under the Boost Software License, Version 1.0. (See
+#  * accompanying file LICENSE_1_0.txt or copy at
+#  * http://www.boost.org/LICENSE_1_0.txt)
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). */
+#
+# include <iostream>
+# include <typeinfo>
+#
+# include <boost/preprocessor/list/for_each.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* List of built-in types.  (Strictly speaking wchar_t should be on the list.) */
+#
+# define BUILTIN_TYPES \
+   BOOST_PP_TUPLE_TO_LIST( \
+      13, \
+      ( \
+         bool, \
+         char, signed char, unsigned char, \
+         unsigned short, short, \
+         int, unsigned, \
+         long, unsigned long, \
+         float, \
+         double, long double \
+      ) \
+   ) \
+   /**/
+#
+# define CATCH(R, _, T) \
+   catch (T t) { \
+      std::cerr << "Caught an " << typeid(t).name() << " = " << t; \
+   } \
+   /**/
+
+int main() {
+   try {
+      throw 10;
+   }
+   BOOST_PP_LIST_FOR_EACH(CATCH, _, BUILTIN_TYPES)
+   return 0;
+}