diff --git a/example/note.c b/example/note.c new file mode 100644 index 0000000..e4d34a4 --- /dev/null +++ b/example/note.c @@ -0,0 +1,22 @@ +/* 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 shows how BOOST_PP_STRINGIZE() can be used to allow macro + * expansion before stringization. + */ + +#include + +#define NOTE(STR)\ + message(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") : " STR) + +#pragma NOTE("Hello, World!") diff --git a/example/static_assert.c b/example/static_assert.c new file mode 100644 index 0000000..b4fe02d --- /dev/null +++ b/example/static_assert.c @@ -0,0 +1,22 @@ +/* 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 shows how BOOST_PP_CAT() can be used to allow macro + * expansion before token concatenation. + */ + +#include + +#define STATIC_ASSERT(EXPR)\ + typedef char BOOST_PP_CAT(static_assert_,__LINE__)[ (EXPR) ? 1 : -1 ] + +STATIC_ASSERT(sizeof(int) <= sizeof(long)); diff --git a/example/subscript_layer.cpp b/example/subscript_layer.cpp new file mode 100644 index 0000000..d5e9ff7 --- /dev/null +++ b/example/subscript_layer.cpp @@ -0,0 +1,31 @@ +/* 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 shows how BOOST_PP_EMPTY can be used as an unused or + * empty parameter. + */ + +#include + +/* This could be a layer from a generative container library. */ +template +struct subscript_layer : base +{ +#define DEF(CV)\ + template\ + CV() typename base::value_type& operator[](typename base::index_type i) CV()\ + { return base::begin()[i]; } + + DEF(BOOST_PP_EMPTY) + DEF(const BOOST_PP_EMPTY) +#undef DEF +};