Files
preprocessor/example/catch_builtin.cpp

51 lines
1.2 KiB
C++
Raw Normal View History

2002-01-30 19:53:52 +00:00
/* Copyright (C) 2002
* Housemarque Oy
* http://www.housemarque.com
*
* Permission to copy, use, modify, sell and distribute this software is
* granted provided this copyright notice appears in all copies. This
* software is provided "as is" without express or implied warranty, and
* with no claim as to its suitability for any purpose.
*
* See http://www.boost.org for most recent version.
*/
/* This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). */
#include <boost/preprocessor/list/for_each.hpp>
#include <boost/preprocessor/tuple/to_list.hpp>
#include <iostream>
#include <typeinfo>
/* 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\
)\
)
/* This is the macro we pass to BOOST_PP_LIST_FOR_EACH(). */
#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;
}