1.. Macros/Asserts//BOOST_MPL_ASSERT_MSG 2 3BOOST_MPL_ASSERT_MSG 4==================== 5 6Synopsis 7-------- 8 9.. parsed-literal:: 10 11 #define BOOST_MPL_ASSERT_MSG( condition, message, types ) \\ 12 |unspecified-token-seq| \\ 13 /\*\*/ 14 15 16Description 17----------- 18 19Generates a compilation error with an embedded custom message when the condition 20doesn't hold. 21 22 23Header 24------ 25 26.. parsed-literal:: 27 28 #include <boost/mpl/assert.hpp> 29 30 31Parameters 32---------- 33 34+---------------+-----------------------------------+-----------------------------------------------+ 35| Parameter | Requirement | Description | 36+===============+===================================+===============================================+ 37| ``condition`` | An integral constant expression | A condition to be asserted. | 38+---------------+-----------------------------------+-----------------------------------------------+ 39| ``message`` | A legal identifier token | A custom message in a form of a legal C++ | 40| | | identifier token. | 41+---------------+-----------------------------------+-----------------------------------------------+ 42| ``types`` | A legal function parameter list | A parenthized list of types to be displayed | 43| | | in the error message. | 44+---------------+-----------------------------------+-----------------------------------------------+ 45 46 47Expression semantics 48-------------------- 49 50For any integral constant expression ``expr``, legal C++ identifier ``message``, and 51arbitrary types ``t1``, ``t2``,... ``tn``: 52 53 54.. parsed-literal:: 55 56 BOOST_MPL_ASSERT_MSG( expr, message, (t1, t2,... tn) ); 57 58:Return type: 59 None. 60 61:Precondition: 62 ``t1``, ``t2``,... ``tn`` are non-``void``. 63 64:Semantics: 65 Generates a compilation error if ``expr != true``, otherwise 66 has no effect. 67 68 When possible within the compiler's diagnostic capabilities, 69 the error message will include the ``message`` identifier and the parenthized 70 list of ``t1``, ``t2``,... ``tn`` types, and have a general form of: 71 72 .. parsed-literal:: 73 74 |...| \*\*\*\*\*\*\*\*\*\*\*\*( |...|::message )\*\*\*\*\*\*\*\*\*\*\*\*)(t1, t2,... tn) |...| 75 76 77.. parsed-literal:: 78 79 BOOST_MPL_ASSERT_MSG( expr, message, (types<t1, t2,... tn>) ); 80 81:Return type: 82 None. 83 84:Precondition: 85 None. 86 87:Semantics: 88 Generates a compilation error if ``expr != true``, otherwise 89 has no effect. 90 91 When possible within the compiler's diagnostics capabilities, 92 the error message will include the ``message`` identifier and the list of 93 ``t1``, ``t2``,... ``tn`` types, and have a general form of: 94 95 .. parsed-literal:: 96 97 |...| \*\*\*\*\*\*\*\*\*\*\*\*( |...|::message )\*\*\*\*\*\*\*\*\*\*\*\*)(types<t1, t2,... tn>) |...| 98 99 100Example 101------- 102 103:: 104 105 template< typename T > struct my 106 { 107 // ... 108 BOOST_MPL_ASSERT_MSG( 109 is_integral<T>::value 110 , NON_INTEGRAL_TYPES_ARE_NOT_ALLOWED 111 , (T) 112 ); 113 }; 114 115 my<void*> test; 116 117 // In instantiation of `my<void*>': 118 // instantiated from here 119 // conversion from ` 120 // mpl_::failed************(my<void*>:: 121 // NON_INTEGRAL_TYPES_ARE_NOT_ALLOWED::************)(void*) 122 // ' to non-scalar type `mpl_::assert<false>' requested 123 124 125See also 126-------- 127 128|Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_RELATION| 129 130 131.. copyright:: Copyright � 2001-2009 Aleksey Gurtovoy and David Abrahams 132 Distributed under the Boost Software License, Version 1.0. (See accompanying 133 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 134