d18009e308
[SVN r25052]
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
# /* 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;
|
|
}
|