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;
+}