.. Macros/Asserts//BOOST_MPL_ASSERT_MSG BOOST_MPL_ASSERT_MSG ==================== Synopsis -------- .. parsed-literal:: #define BOOST_MPL_ASSERT_MSG( condition, message, types ) \\ |unspecified-token-seq| \\ /\*\*/ Description ----------- Generates a compilation error with an embedded custom message when the condition doesn't hold. Header ------ .. parsed-literal:: #include Parameters ---------- +---------------+-----------------------------------+-----------------------------------------------+ | Parameter | Requirement | Description | +===============+===================================+===============================================+ | ``condition`` | An integral constant expression | A condition to be asserted. | +---------------+-----------------------------------+-----------------------------------------------+ | ``message`` | A legal identifier token | A custom message in a form of a legal C++ | | | | identifier token. | +---------------+-----------------------------------+-----------------------------------------------+ | ``types`` | A legal function parameter list | A parenthized list of types to be displayed | | | | in the error message. | +---------------+-----------------------------------+-----------------------------------------------+ Expression semantics -------------------- For any integral constant expression ``expr``, legal C++ identifier ``message``, and arbitrary types ``t1``, ``t2``,... ``tn``: .. parsed-literal:: BOOST_MPL_ASSERT_MSG( expr, message, (t1, t2,... tn) ); :Return type: None. :Precondition: ``t1``, ``t2``,... ``tn`` are non-``void``. :Semantics: Generates a compilation error if ``expr::value != true``, otherwise has no effect. When possible within the compiler's diagnostic capabilities, the error message will include the ``message`` identifier and the parenthized list of ``t1``, ``t2``,... ``tn`` types, and have a general form of: .. parsed-literal:: |...| \*\*\*\*\*\*\*\*\*\*\*\*( |...|::message )\*\*\*\*\*\*\*\*\*\*\*\*)(t1, t2,... tn) |...| .. parsed-literal:: BOOST_MPL_ASSERT_MSG( expr, message, (types) ); :Return type: None. :Precondition: None. :Semantics: Generates a compilation error if ``expr::value != true``, otherwise has no effect. When possible within the compiler's diagnostics capabilities, the error message will include the ``message`` identifier and the list of ``t1``, ``t2``,... ``tn`` types, and have a general form of: .. parsed-literal:: |...| \*\*\*\*\*\*\*\*\*\*\*\*( |...|::message )\*\*\*\*\*\*\*\*\*\*\*\*)(types) |...| Example ------- :: template< typename T > struct my { // ... BOOST_MPL_ASSERT_MSG( is_integral::value , NON_INTEGRAL_TYPES_ARE_NOT_ALLOWED , (T) ); }; my test; // In instantiation of `my': // instantiated from here // conversion from ` // mpl_::failed************(my:: // NON_INTEGRAL_TYPES_ARE_NOT_ALLOWED::************)(void*) // ' to non-scalar type `mpl_::assert' requested See also -------- |Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_RELATION|