...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Macros / Asserts / BOOST_MPL_ASSERT_RELATION |
#define BOOST_MPL_ASSERT_RELATION( x, relation, y ) \ unspecified token sequence \ /**/
A specialized assertion macro for checking numerical conditions. Generates a compilation error when the condition ( x relation y ) doesn't hold.
#include <boost/mpl/assert.hpp>
Parameter | Requirement | Description |
---|---|---|
x | An integral constant | Left operand of the checked relation. |
y | An integral constant | Right operand of the checked relation. |
relation | A C++ operator token | An operator token for the relation being checked. |
For any integral constants x, y and a legal C++ operator token op:
BOOST_MPL_ASSERT_RELATION( x, op, y );
Return type: | None. |
---|---|
Semantics: | Generates a compilation error if ( x op y ) != true, otherwise has no effect. When possible within the compiler's diagnostic capabilities, the error message will include a name of the relation being checked, the actual values of both operands, and have a general form of: ... ************...assert_relation<op, x, y>::************) ... |
template< typename T, typename U > struct my { // ... BOOST_MPL_ASSERT_RELATION( sizeof(T), <, sizeof(U) ); }; my<char[50],char[10]> test; // In instantiation of `my<char[50], char[10]>': // instantiated from here // conversion from ` // mpl_::failed************mpl_::assert_relation<less, 50, 10>::************' // to non-scalar type `mpl_::assert<false>' requested