blob: e100f09f4bd1483661fb1281af03abddea6f098a [file] [log] [blame]
.. Macros/Asserts//BOOST_MPL_ASSERT_RELATION
BOOST_MPL_ASSERT_RELATION
=========================
Synopsis
--------
.. parsed-literal::
#define BOOST_MPL_ASSERT_RELATION( x, relation, y ) \\
|unspecified-token-seq| \\
/\*\*/
Description
-----------
A specialized assertion macro for checking numerical conditions. Generates
a compilation error when the condition ``( x relation y )``
doesn't hold.
Header
------
.. parsed-literal::
#include <boost/mpl/assert.hpp>
Parameters
----------
+---------------+-----------------------------------+-----------------------------------------------+
| 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. |
+---------------+-----------------------------------+-----------------------------------------------+
Expression semantics
--------------------
For any integral constants ``x``, ``y`` and a legal C++ operator token ``op``:
.. parsed-literal::
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:
.. parsed-literal::
|...| \*\*\*\*\*\*\*\*\*\*\*\*\ |...|\ assert_relation<op, x, y>::\*\*\*\*\*\*\*\*\*\*\*\*) |...|
Example
-------
::
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
See also
--------
|Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_MSG|
.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)