//! Expands to nothing if C != 0 and to MSG if C == 0.
-#define BOOST_PP_ASSERT_MSG(C,MSG) BOOST_PP_IF(C,BOOST_PP_EMPTY,BOOST_PP_IDENTITY(MSG))()
+#define BOOST_PP_ASSERT_MSG(C,MSG) BOOST_PP_IF(C,BOOST_PP_EMPTY,MSG BOOST_PP_EMPTY)()
//! Obsolete. Use BOOST_PP_ASSERT_MSG().
#define BOOST_PREPROCESSOR_ASSERT_MSG(C,MSG) BOOST_PP_ASSERT_MSG(C,MSG)
diff --git a/include/boost/preprocessor/tuple.hpp b/include/boost/preprocessor/tuple.hpp
index a8a6fc7..9993c4e 100644
--- a/include/boost/preprocessor/tuple.hpp
+++ b/include/boost/preprocessor/tuple.hpp
@@ -37,18 +37,14 @@ Example:
BOOST_PP_TUPLE_ELEM(2,1,(A,B))
\endverbatim
-The above expands to:
-
-\verbatim
- B
-\endverbatim
+The above expands to B.
See also BOOST_PP_LIMIT_TUPLE.
*/
#define BOOST_PP_TUPLE_ELEM(N,I,T) BOOST_PP_TUPLE_ELEM_DELAY(N,I,T)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
-#if defined(__MWERKS__) && __MWERKS__ <= 0x2406
+#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) && __MWERKS__ <= 0x2406
// This is a workaround for a CodeWarrior PP bug. Strictly speaking
// this workaround invokes undefined behavior, but it works as desired.
# define BOOST_PP_TUPLE_ELEM_DELAY(N,I,T) BOOST_PP_TUPLE##N##_ELEM##I##T
diff --git a/include/boost/preprocessor/while.hpp b/include/boost/preprocessor/while.hpp
index 5e82517..6bf60fb 100644
--- a/include/boost/preprocessor/while.hpp
+++ b/include/boost/preprocessor/while.hpp
@@ -84,8 +84,8 @@ BOOST_PP_MUL().
// #1) The state is a 3-tuple. After the iteration is finished, the first
// element of the tuple is the result.
//
- // #2) The WHILE primitive is "invoked" directly. BOOST_PP_WHILE(D,...) can't
- // be used because it would not be expanded by the C/C++ preprocessor.
+ // #2) The WHILE primitive is "invoked" directly. BOOST_PP_WHILE(D,...)
+ // can't be used because it would not be expanded by the C preprocessor.
//
// #3) ???_C is the condition and ???_F is the iteration function.