Compare commits

..

1 Commits

Author SHA1 Message Date
Beman Dawes df7b4e9297 Release 1.45.0
[SVN r66646]
2010-11-19 15:17:53 +00:00
42 changed files with 55 additions and 337 deletions
Executable → Regular
View File
+1 -1
View File
@@ -35,7 +35,7 @@ metafunctions. It provides a conceptual foundation and an extensive
set of powerful and coherent tools that make doing explict metaprogramming
in C++ as easy and enjoyable as possible within the current language.</p>
<p>There are several places to start when getting familiar with the library,
depending on what you know about metaprogramming in general and
depending on what your know about metaprogramming in general and
C++ template metaprogramming in particular. Starting with
Boost version 1.32, the MPL comes with both an <a class="reference" href="./tutorial/tutorial-metafunctions.html">in-depth tutorial</a> on its
fundamental concepts and an annotated <a class="reference" href="./tutorial/reference-manual.html">reference manual</a> covering all concepts
+2 -2
View File
@@ -123,7 +123,7 @@ typedef <a href="./next.html" class="identifier">next</a>&lt;i<sub>n</sub>&gt;::
</tr>
<tr class="field"><th class="field-name">Postcondition:</th><td class="field-body"><p class="first">Equivalent to</p>
<pre class="last literal-block">
<a href="./for-each.html" class="identifier">for_each</a>&lt; <a href="./transform-view.html" class="identifier">transform_view</a>&lt;s,op&gt; &gt;( f );
<a href="./for-each.html" class="identifier">for_each</a>&lt; tranform_view&lt;s,op&gt; &gt;( f );
</pre>
</td>
</tr>
@@ -141,7 +141,7 @@ struct value_printer
{
template&lt; typename U &gt; void operator()(U x)
{
std::cout &lt;&lt; x &lt;&lt; '\n';
std::cout &lt;&lt; x &lt;&lt; 'n';
}
};
+1 -1
View File
@@ -142,7 +142,7 @@ of <tt class="literal"><span class="pre">l</span></tt> in the same order; see
<h3><a class="subsection-title" href="#example" name="example">Example</a></h3>
<pre class="literal-block">
typedef <a href="./list.html" class="identifier">list</a>&lt;float,double,long double&gt; floats;
typedef <a href="./push-front.html" class="identifier">push_front</a>&lt;floats,int&gt;::type types;
typedef <a href="./push-front.html" class="identifier">push_front</a>&lt;floating_types,int&gt;::type types;
<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same&lt; <a href="./front.html" class="identifier">front</a>&lt;types&gt;::type, int > ));
</pre>
+5 -17
View File
@@ -12,7 +12,7 @@
<td class="header-group page-location"><a href="../refmanual.html" class="navigation-link">Front Page</a> / <a href="./sequences.html" class="navigation-link">Sequences</a> / <a href="./classes.html" class="navigation-link">Classes</a> / <a href="./set.html" class="navigation-link">set</a></td>
</tr></table><div class="header-separator"></div>
<div class="section" id="set">
<h1><a class="toc-backref" href="./classes.html#id1410">set</a></h1>
<h1><a class="toc-backref" href="./classes.html#id1409">set</a></h1>
<div class="section" id="id72">
<h3><a class="subsection-title" href="#description" name="description">Description</a></h3>
<p><tt class="literal"><span class="pre"><a href="./set.html" class="identifier">set</a></span></tt> is a <a class="reference internal" href="./variadic-sequence.html">variadic</a>, <a class="reference internal" href="./associative-sequence.html">associative</a>, <a class="reference internal" href="./extensible-associative-sequence.html">extensible</a> sequence of types that
@@ -52,8 +52,7 @@ A <tt class="literal"><span class="pre"><a href="./set.html" class="identifier">
<div class="section" id="id77">
<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3>
<p>In the following table, <tt class="literal"><span class="pre">s</span></tt> is an instance of <tt class="literal"><span class="pre"><a href="./set.html" class="identifier">set</a></span></tt>, <tt class="literal"><span class="pre">pos</span></tt> is an iterator into <tt class="literal"><span class="pre">s</span></tt>,
and <tt class="literal"><span class="pre">x</span></tt>, <tt class="literal"><span class="pre">k</span></tt>, and <em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub> is a set of <em>unique</em> arbitrary types. [<em>Note:</em> See <a class="reference internal" href="./set.html#nonunique-set-example">below</a> for
an example of how to construct a <tt class="literal"><span class="pre"><a href="./set.html" class="identifier">set</a></span></tt> from a list of potentially non-unique types — <em>end note</em>]</p>
and <tt class="literal"><span class="pre">x</span></tt>, <tt class="literal"><span class="pre">k</span></tt>, and <em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub> are arbitrary types.</p>
<table border="1" class="docutils table">
<colgroup>
<col width="40%" />
@@ -152,9 +151,8 @@ the key <tt class="literal"><span class="pre">k</span></tt> in <tt class="litera
</tbody>
</table>
</div>
<div class="section" id="id79">
<div class="section" id="id78">
<h3><a class="subsection-title" href="#example" name="example">Example</a></h3>
<p>Basic <tt class="literal"><span class="pre"><a href="./set.html" class="identifier">set</a></span></tt> invariants:</p>
<pre class="literal-block">
typedef <a href="./set.html" class="identifier">set</a>&lt; int,long,double,<a href="./int.html" class="identifier">int_</a>&lt;5&gt; &gt; s;
@@ -166,18 +164,8 @@ typedef <a href="./set.html" class="identifier">set</a>&lt; int,long,double,<a h
<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same&lt; <a href="./at.html" class="identifier">at</a>&lt;s,<a href="./int.html" class="identifier">int_</a>&lt;5&gt; &gt;::type, <a href="./int.html" class="identifier">int_</a>&lt;5&gt; &gt; ));
<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same&lt; <a href="./at.html" class="identifier">at</a>&lt;s,char&gt;::type, <a href="./void.html" class="identifier">void_</a> > ));
</pre>
<p id="nonunique-set-example">Constructing a <tt class="literal"><span class="pre"><a href="./set.html" class="identifier">set</a></span></tt> from a list of potentially non-unique types:</p>
<pre class="literal-block">
typedef <a href="./fold.html" class="identifier">fold</a>&lt;
<a href="./vector.html" class="identifier">vector</a>&lt;int,int,long,long&gt;
, set0&lt;&gt;
, <a href="./insert.html" class="identifier">insert</a>&lt;<a href="./placeholders.html" class="identifier">_1</a>,<a href="./placeholders.html" class="identifier">_2</a>&gt;
&gt;::type s;
<a href="./assert-relation.html" class="identifier">BOOST_MPL_ASSERT_RELATION</a>( <a href="./size.html" class="identifier">size</a>&lt;s&gt;::value, ==, 2 );
</pre>
</div>
<div class="section" id="id80">
<div class="section" id="id79">
<h3><a class="subsection-title" href="#see-also" name="see-also">See also</a></h3>
<p><a class="reference internal" href="./sequences.html">Sequences</a>, <a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>, <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>, <a class="reference internal" href="./extensible-associative-sequence.html">Extensible Associative Sequence</a>, <a class="reference internal" href="./set-c.html">set_c</a>, <a class="reference internal" href="./map.html">map</a>, <a class="reference internal" href="./vector.html">vector</a></p>
<!-- Sequences/Classes//map |50 -->
@@ -186,7 +174,7 @@ typedef <a href="./fold.html" class="identifier">fold</a>&lt;
<div class="footer-separator"></div>
<table class="footer"><tr class="footer"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./deque.html" class="navigation-link">Prev</a>&nbsp;<a href="./map.html" class="navigation-link">Next</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./deque.html" class="navigation-link">Back</a>&nbsp;<a href="./map.html" class="navigation-link">Along</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./classes.html" class="navigation-link">Up</a>&nbsp;<a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td>
<td><div class="copyright-footer"><div class="copyright">Copyright © 2001-2011 Aleksey Gurtovoy and David Abrahams</div>
<td><div class="copyright-footer"><div class="copyright">Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams</div>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a class="reference external" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</div></td></tr></table></body>
</html>
+1 -1
View File
@@ -102,7 +102,7 @@ Example
.. parsed-literal::
typedef list<float,double,long double> floats;
typedef push_front<floats,int>::type types;
typedef push_front<floating_types,int>::type types;
BOOST_MPL_ASSERT(( is_same< front<types>::type, int > ));
+2 -22
View File
@@ -37,10 +37,7 @@ Expression semantics
--------------------
In the following table, ``s`` is an instance of ``set``, ``pos`` is an iterator into ``s``,
and ``x``, ``k``, and |t1...tn| is a set of *unique* arbitrary types. [*Note:* See `below`__ for
an example of how to construct a ``set`` from a list of potentially non-unique types |--| *end note*\]
__ nonunique-set-example_
and ``x``, ``k``, and |t1...tn| are arbitrary types.
+---------------------------------------+-----------------------------------------------------------+
| Expression | Semantics |
@@ -108,8 +105,6 @@ __ nonunique-set-example_
Example
-------
Basic ``set`` invariants:
.. parsed-literal::
typedef set< int,long,double,int_<5> > s;
@@ -123,27 +118,12 @@ Basic ``set`` invariants:
BOOST_MPL_ASSERT(( is_same< at<s,char>::type, void\_ > ));
.. _nonunique-set-example:
Constructing a ``set`` from a list of potentially non-unique types:
.. parsed-literal::
typedef fold<
vector<int,int,long,long>
, set0<>
, insert<_1,_2>
>::type s;
BOOST_MPL_ASSERT_RELATION( size<s>::value, ==, 2 );
See also
--------
|Sequences|, |Variadic Sequence|, |Associative Sequence|, |Extensible Associative Sequence|, |set_c|, |map|, |vector|
.. copyright:: Copyright © 2001-2011 Aleksey Gurtovoy and David Abrahams
.. 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)
-1
View File
@@ -644,7 +644,6 @@ td,
table.table
th
{
border: solid 1px #c7c7c7;
vertical-align: top;
}
+1 -1
View File
@@ -78,7 +78,7 @@ one.</p>
</ol>
<p>To get a detailed picture of the new apply/lambda semantics, please
see the test case at
<a class="reference" href="../../test/apply.cpp" target="_top">libs/mpl/test/apply.cpp</a>
<a class="reference" href="http://cvs.sourceforge.net/viewcvs.py/boost/boost/libs/mpl/test/apply.cpp?view=markup" target="_top">http://cvs.sourceforge.net/viewcvs.py/boost/boost/libs/mpl/test/apply.cpp?view=markup</a>
and the corresponding sections of the MPL <a class="reference" href="./reference-manual.html">reference manual</a>.</p>
<table class="footnote" frame="void" id="id21" rules="none">
<colgroup><col class="label" /><col /></colgroup>
+1 -1
View File
@@ -113,7 +113,7 @@ arguments), which comes down to the follwing two criteria:</p>
placeholders do contain these).</li>
</ol>
<p>If these two hold, you can safely put <tt class="literal"><span class="pre">BOOST_MPL_AUX_LAMBDA_SUPPORT</span></tt> inside
your metafunction and forget about the issue. If not, you are out of luck and
your metafunction and forget about the issue. If not, your are out of luck and
probably have to write a metafunction class instead.</p>
<p>The good news are that most of the MPL's own metafunctions and <a class="reference" href="../../../type_traits/index.html" target="_top">Boost.Type Traits</a>
templates are &quot;placeholder-safe&quot; and have the workaround applied to them, so
+1 -1
View File
@@ -24,7 +24,7 @@ arguments of different types, and the result will yield the
largest/most general of the argument types. The infrastructure
allows user-defined numeric types to be freely intermixed with
predefined library types. See
<a class="reference" href="../../test/numeric_ops.cpp" target="_top">libs/mpl/test/numeric_ops.cpp</a>
<a class="reference" href="http://cvs.sourceforge.net/viewcvs.py/boost/boost/libs/mpl/test/numeric_ops.cpp?view=markup" target="_top">http://cvs.sourceforge.net/viewcvs.py/boost/boost/libs/mpl/test/numeric_ops.cpp?view=markup</a>
for an illustrative example, and the <a class="reference" href="./reference-manual.html">reference manual</a> for
the formal infrastructure specification.</p>
<p>If you were using MPL numeric metafunctions on your own integral
-1
View File
@@ -1 +0,0 @@
ECHO is on.
Executable → Regular
View File
Executable → Regular
View File
+4 -3
View File
@@ -14,7 +14,7 @@
// $Date$
// $Revision$
#include <boost/mpl/aux_/preprocessor/default_params.hpp>
#include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
#include <boost/mpl/aux_/na.hpp>
#include <boost/mpl/aux_/arity_spec.hpp>
@@ -23,7 +23,8 @@ namespace boost { namespace mpl {
template< typename Value > struct always
{
template<
BOOST_MPL_PP_DEFAULT_PARAMS(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, typename T, na)
typename T
BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(1, typename T, na)
>
struct apply
{
@@ -31,7 +32,7 @@ template< typename Value > struct always
};
};
BOOST_MPL_AUX_ARITY_SPEC(0, always)
BOOST_MPL_AUX_ARITY_SPEC(1, always)
}}
+2 -2
View File
@@ -28,7 +28,7 @@
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
// has to be checked in a separate condition, otherwise GCC complains
// about 'and' being an alternative token
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(and)
# pragma push_macro("and")
@@ -41,7 +41,7 @@
# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
# include <boost/mpl/aux_/include_preprocessed.hpp>
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(and)
# pragma pop_macro("and")
+2 -71
View File
@@ -25,7 +25,6 @@
#include <boost/mpl/aux_/config/dtp.hpp>
#include <boost/mpl/aux_/config/gcc.hpp>
#include <boost/mpl/aux_/config/msvc.hpp>
#include <boost/mpl/aux_/config/gpu.hpp>
#include <boost/mpl/aux_/config/static_constant.hpp>
#include <boost/mpl/aux_/config/pp_counter.hpp>
#include <boost/mpl/aux_/config/workaround.hpp>
@@ -35,9 +34,6 @@
#include <boost/config.hpp> // make sure 'size_t' is placed into 'std'
#include <cstddef>
#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
#include <boost/mpl/if.hpp>
#endif
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|| (BOOST_MPL_CFG_GCC != 0) \
@@ -56,7 +52,7 @@
// and GCC (which issues "unused variable" warnings when static constants are used
// at a function scope)
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|| (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0)
|| (BOOST_MPL_CFG_GCC != 0)
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
#else
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
@@ -135,38 +131,8 @@ template< assert_::relations r, long x, long y > struct assert_relation {};
#endif
#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
template<class Pred>
struct extract_assert_pred;
template<class Pred>
struct extract_assert_pred<void(Pred)> { typedef Pred type; };
template<class Pred>
struct eval_assert {
typedef typename extract_assert_pred<Pred>::type P;
typedef typename P::type p_type;
typedef typename ::boost::mpl::if_c<p_type::value,
AUX778076_ASSERT_ARG(assert<false>),
failed ************ P::************
>::type type;
};
template<class Pred>
struct eval_assert_not {
typedef typename extract_assert_pred<Pred>::type P;
typedef typename P::type p_type;
typedef typename ::boost::mpl::if_c<!p_type::value,
AUX778076_ASSERT_ARG(assert<false>),
failed ************ ::boost::mpl::not_<P>::************
>::type type;
};
template< typename T >
T make_assert_arg();
#elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
#if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
template< bool > struct assert_arg_pred_impl { typedef int type; };
template<> struct assert_arg_pred_impl<true> { typedef void* type; };
@@ -245,39 +211,6 @@ assert_rel_arg( assert_relation<r,x,y> );
BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
// BOOST_MPL_ASSERT((pred<x,...>))
#define BOOST_MPL_ASSERT(pred) \
BOOST_MPL_AUX_ASSERT_CONSTANT( \
std::size_t \
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
boost::mpl::assertion_failed<false>( \
boost::mpl::make_assert_arg< \
typename boost::mpl::eval_assert<void pred>::type \
>() \
) \
) \
) \
/**/
// BOOST_MPL_ASSERT_NOT((pred<x,...>))
#define BOOST_MPL_ASSERT_NOT(pred) \
BOOST_MPL_AUX_ASSERT_CONSTANT( \
std::size_t \
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
boost::mpl::assertion_failed<false>( \
boost::mpl::make_assert_arg< \
typename boost::mpl::eval_assert_not<void pred>::type \
>() \
) \
) \
) \
/**/
#else
// BOOST_MPL_ASSERT((pred<x,...>))
@@ -317,8 +250,6 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
/**/
#endif
#endif
// BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
#if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
-35
View File
@@ -1,35 +0,0 @@
#ifndef BOOST_MPL_AUX_CONFIG_GPU_HPP_INCLUDED
#define BOOST_MPL_AUX_CONFIG_GPU_HPP_INCLUDED
// Copyright Eric Niebler 2014
//
// 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)
//
// See http://www.boost.org/libs/mpl for documentation.
// $Id$
// $Date$
// $Revision$
#include <boost/config.hpp>
#if !defined(BOOST_MPL_CFG_GPU_ENABLED) \
# define BOOST_MPL_CFG_GPU_ENABLED BOOST_GPU_ENABLED
#endif
#if defined __CUDACC__
# define BOOST_MPL_CFG_GPU 1
#else
# define BOOST_MPL_CFG_GPU 0
#endif
#endif // BOOST_MPL_AUX_CONFIG_GPU_HPP_INCLUDED
@@ -24,7 +24,6 @@
|| BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \
|| BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
|| BOOST_WORKAROUND(__NVCC__, BOOST_TESTED_AT(1)) \
)
# define BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING
+1 -1
View File
@@ -77,7 +77,7 @@ struct AUX_WRAPPER_NAME
// functions that return objects of both arithmetic ('int', 'long',
// 'double', etc.) and wrapped integral types (for an example, see
// "mpl/example/power.cpp")
BOOST_CONSTEXPR operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
};
#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
@@ -15,16 +15,9 @@
// $Revision$
#include <boost/preprocessor/seq/subseq.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/preprocessor/arithmetic/add.hpp>
#define BOOST_MPL_PP_RANGE_ITEM(z,n,_) (n)
#define BOOST_MPL_PP_RANGE(first, length) \
BOOST_PP_SEQ_SUBSEQ( \
BOOST_PP_REPEAT(BOOST_PP_ADD(first,length), BOOST_MPL_PP_RANGE_ITEM, _), \
first, length \
) \
BOOST_PP_SEQ_SUBSEQ((0)(1)(2)(3)(4)(5)(6)(7)(8)(9), first, length) \
/**/
#endif // BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
-4
View File
@@ -16,12 +16,10 @@
// $Revision$
#include <boost/ref.hpp>
#include <boost/mpl/aux_/config/gpu.hpp>
namespace boost { namespace mpl { namespace aux {
template< typename F >
BOOST_MPL_CFG_GPU_ENABLED
inline
F& unwrap(F& f, long)
{
@@ -29,7 +27,6 @@ F& unwrap(F& f, long)
}
template< typename F >
BOOST_MPL_CFG_GPU_ENABLED
inline
F&
unwrap(reference_wrapper<F>& f, int)
@@ -38,7 +35,6 @@ unwrap(reference_wrapper<F>& f, int)
}
template< typename F >
BOOST_MPL_CFG_GPU_ENABLED
inline
F&
unwrap(reference_wrapper<F> const& f, int)
+2 -2
View File
@@ -19,7 +19,7 @@
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitand)'
// has to be checked in a separate condition, otherwise GCC complains
// about 'bitand' being an alternative token
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(bitand)
# pragma push_macro("bitand")
@@ -34,7 +34,7 @@
#define AUX778076_OP_TOKEN &
#include <boost/mpl/aux_/arithmetic_op.hpp>
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(bitand)
# pragma pop_macro("bitand")
+2 -2
View File
@@ -19,7 +19,7 @@
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitor)'
// has to be checked in a separate condition, otherwise GCC complains
// about 'bitor' being an alternative token
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(bitor)
# pragma push_macro("bitor")
@@ -34,7 +34,7 @@
#define AUX778076_OP_TOKEN |
#include <boost/mpl/aux_/arithmetic_op.hpp>
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(bitor)
# pragma pop_macro("bitor")
+1 -1
View File
@@ -26,7 +26,7 @@ template< bool C_ > struct bool_
typedef integral_c_tag tag;
typedef bool_ type;
typedef bool value_type;
BOOST_CONSTEXPR operator bool() const { return this->value; }
operator bool() const { return this->value; }
};
#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+3 -3
View File
@@ -4,8 +4,8 @@
// Copyright Aleksey Gurtovoy 2000-2004
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// 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)
//
// See http://www.boost.org/libs/mpl for documentation.
@@ -43,7 +43,7 @@ struct eval_if
BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
};
// (almost) copy & paste in order to save one more
// (almost) copy & paste in order to save one more
// recursively nested template instantiation to user
template<
bool C
+1 -8
View File
@@ -22,7 +22,6 @@
#include <boost/mpl/deref.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/mpl/aux_/config/gpu.hpp>
#include <boost/mpl/aux_/unwrap.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -41,7 +40,6 @@ struct for_each_impl
, typename TransformFunc
, typename F
>
BOOST_MPL_CFG_GPU_ENABLED
static void execute(
Iterator*
, LastIterator*
@@ -61,7 +59,6 @@ struct for_each_impl<false>
, typename TransformFunc
, typename F
>
BOOST_MPL_CFG_GPU_ENABLED
static void execute(
Iterator*
, LastIterator*
@@ -92,7 +89,6 @@ template<
, typename TransformOp
, typename F
>
BOOST_MPL_CFG_GPU_ENABLED
inline
void for_each(F f, Sequence* = 0, TransformOp* = 0)
{
@@ -109,13 +105,10 @@ template<
typename Sequence
, typename F
>
BOOST_MPL_CFG_GPU_ENABLED
inline
void for_each(F f, Sequence* = 0)
{
// jfalcou: fully qualifying this call so it doesnt clash with phoenix::for_each
// ons ome compilers -- done on 02/28/2011
boost::mpl::for_each<Sequence, identity<> >(f);
for_each<Sequence, identity<> >(f);
}
}}
+2 -9
View File
@@ -155,11 +155,10 @@ template<> struct trait<T> \
// SFINAE-based implementations below are derived from a USENET newsgroup's
// posting by Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST)
# elif BOOST_WORKAROUND(BOOST_MSVC, <= 1400) \
|| (BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1800)) && defined(__CUDACC__)) \
# elif BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|| BOOST_WORKAROUND(__IBMCPP__, <= 700)
// MSVC 7.1 & MSVC 8.0 & VACPP
// MSVC 7.1+ & VACPP
// agurt, 15/jun/05: replace overload-based SFINAE implementation with SFINAE
// applied to partial specialization to fix some apparently random failures
@@ -291,24 +290,18 @@ struct trait \
# if !defined(BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES)
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
# define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 1
# else
# define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 0
# endif
# endif
# if !defined(BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION)
# if (defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS))
# define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 1
# else
# define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 0
# endif
# endif
# if !defined(BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE)
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
# define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 1
# else
# define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 0
# endif
# endif
+2 -2
View File
@@ -29,7 +29,7 @@
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
// has to be checked in a separate condition, otherwise GCC complains
// about 'or' being an alternative token
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(or)
# pragma push_macro("or")
@@ -42,7 +42,7 @@
# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
# include <boost/mpl/aux_/include_preprocessed.hpp>
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_MSC_VER)
#ifndef __GCCXML__
#if defined(or)
# pragma pop_macro("or")
+3 -4
View File
@@ -37,7 +37,8 @@ namespace aux {
static const unsigned value = 1;
};
#endif
} // namespace aux
} // namespace aux
template <class T>
struct print
@@ -46,9 +47,7 @@ struct print
, aux::print_base
#endif
{
#if defined(__clang__)
const int m_x = 1 / (sizeof(T) - sizeof(T));
#elif defined(BOOST_MSVC)
#if defined(BOOST_MSVC)
enum { n = sizeof(T) + -1 };
#elif defined(__MWERKS__)
void f(int);
+3 -3
View File
@@ -32,7 +32,7 @@ struct s_item
typedef s_item<T,Base> item_;
typedef void_ last_masked_;
typedef T item_type_;
typedef typename Base::item_ base;
typedef Base base;
typedef typename next< typename Base::size >::type size;
typedef typename next< typename Base::order >::type order;
@@ -55,7 +55,7 @@ struct s_mask
typedef s_mask<T,Base> item_;
typedef T last_masked_;
typedef void_ item_type_;
typedef typename Base::item_ base;
typedef Base base;
typedef typename prior< typename Base::size >::type size;
BOOST_MPL_AUX_SET_OVERLOAD( aux::yes_tag, IS_MASKED, s_mask, aux::type_wrapper<T>* );
@@ -69,7 +69,7 @@ struct s_unmask
typedef s_unmask<T,Base> item_;
typedef void_ last_masked_;
typedef T item_type_;
typedef typename Base::item_ base;
typedef Base base;
typedef typename next< typename Base::size >::type size;
BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_unmask, aux::type_wrapper<T>* );
+2 -2
View File
@@ -19,7 +19,7 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/predef/other/endian.h>
#include <boost/detail/endian.hpp>
#include <boost/mpl/limits/string.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/char.hpp>
@@ -59,7 +59,7 @@ namespace boost { namespace mpl
#define BOOST_MPL_MULTICHAR_LENGTH(c) \
(std::size_t)((c<CHAR_MIN) ? 4 : ((c>0xffffff)+(c>0xffff)+(c>0xff)+1))
#if defined(BOOST_ENDIAN_LITTLE_BYTE) && defined(__SUNPRO_CC)
#if defined(BOOST_LITTLE_ENDIAN) && defined(__SUNPRO_CC)
#define BOOST_MPL_MULTICHAR_AT(c,i) \
(char)(0xff&((unsigned)(c)>>(8*(std::size_t)(i))))
-14
View File
@@ -1,14 +0,0 @@
{
"key": "mpl",
"name": "MPL",
"authors": [
"Aleksey Gurtovoy"
],
"description": "The Boost.MPL library is a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language.",
"category": [
"Metaprogramming"
],
"maintainers": [
"Aleksey Gurtovoy <agurtovoy -at- meta-comm.com>"
]
}
Executable → Regular
View File
-1
View File
@@ -1,5 +1,4 @@
compile aux_/increased_arity.cpp ;
compile aux_/largest_int.cpp ;
compile aux_/msvc_is_class.cpp ;
compile aux_/template_arity.cpp ;
+3 -9
View File
@@ -1,8 +1,8 @@
// Copyright Aleksey Gurtovoy 2000-2004
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// 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)
//
// See http://www.boost.org/libs/mpl for documentation.
@@ -22,8 +22,6 @@ MPL_TEST_CASE()
{
typedef always<true_> always_true;
MPL_ASSERT(( apply< always_true > ));
MPL_ASSERT(( apply0< always_true > ));
MPL_ASSERT(( apply1< always_true,false_ > ));
MPL_ASSERT(( apply2< always_true,false_,false_ > ));
MPL_ASSERT(( apply3< always_true,false_,false_,false_ > ));
@@ -32,16 +30,12 @@ MPL_TEST_CASE()
MPL_TEST_CASE()
{
typedef always< int_<10> > always_10;
typedef always< int_<10> > always_10;
typedef apply< always_10 >::type res;
typedef apply0< always_10 >::type res0;
typedef apply1< always_10,int_<0> >::type res1;
typedef apply2< always_10,int_<0>,int_<0> >::type res2;
typedef apply3< always_10,int_<0>,int_<0>,int_<0> >::type res3;
MPL_ASSERT_RELATION( res::value, ==, 10 );
MPL_ASSERT_RELATION( res0::value, ==, 10 );
MPL_ASSERT_RELATION( res1::value, ==, 10 );
MPL_ASSERT_RELATION( res2::value, ==, 10 );
MPL_ASSERT_RELATION( res3::value, ==, 10 );
-11
View File
@@ -71,17 +71,6 @@ struct her
}
};
template<class T>
struct nested : boost::mpl::true_ {
BOOST_MPL_ASSERT(( boost::is_pointer<T*> ));
BOOST_MPL_ASSERT_NOT(( boost::is_same<void,T> ));
BOOST_MPL_ASSERT_RELATION( sizeof(T*), >, 1 );
BOOST_MPL_ASSERT_MSG( true, GLOBAL_SCOPE_ERROR, (int,long) );
};
BOOST_MPL_ASSERT(( nested<int> ));
BOOST_MPL_ASSERT_NOT(( boost::mpl::not_<nested<unsigned> > ));
int main()
{
her<void> h;
-50
View File
@@ -1,50 +0,0 @@
// Copyright Bruno Dutra 2015
//
// 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)
//
// See http://www.boost.org/libs/mpl for documentation.
// $Id$
// $Date$
// $Revision$
#define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 15
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#include <boost/mpl/logical.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/mpl/aux_/test.hpp>
#include <boost/preprocessor/inc.hpp>
#include <boost/preprocessor/repeat_from_to.hpp>
#include <boost/preprocessor/enum_params.hpp>
#include <boost/preprocessor/facilities/intercept.hpp>
#define TEST_N_ARY(unused1, N, unused2) \
static_assert_< \
apply< \
and_<BOOST_PP_ENUM_PARAMS(N, _ BOOST_PP_INTERCEPT)>, \
BOOST_PP_ENUM_PARAMS(N, true_ BOOST_PP_INTERCEPT) \
> \
>(); \
/**/
template<typename assertion>
void static_assert_(){
MPL_ASSERT((typename assertion::type));
}
MPL_TEST_CASE()
{
BOOST_PP_REPEAT_FROM_TO(
2,
BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY),
TEST_N_ARY,
_
)
}
+6 -6
View File
@@ -37,9 +37,9 @@ MPL_TEST_CASE()
MPL_ASSERT_RELATION( (bitor_<_0,_0>::value), ==, 0 );
MPL_ASSERT_RELATION( (bitor_<_1,_0>::value), ==, 1 );
MPL_ASSERT_RELATION( (bitor_<_0,_1>::value), ==, 1 );
MPL_ASSERT_RELATION( static_cast<long>(bitor_<_0,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
MPL_ASSERT_RELATION( static_cast<long>(bitor_<_1,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
MPL_ASSERT_RELATION( static_cast<long>(bitor_<_8,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
MPL_ASSERT_RELATION( (bitor_<_0,_ffffffff>::value), ==, 0xffffffff );
MPL_ASSERT_RELATION( (bitor_<_1,_ffffffff>::value), ==, 0xffffffff );
MPL_ASSERT_RELATION( (bitor_<_8,_ffffffff>::value), ==, 0xffffffff );
}
MPL_TEST_CASE()
@@ -47,9 +47,9 @@ MPL_TEST_CASE()
MPL_ASSERT_RELATION( (bitxor_<_0,_0>::value), ==, 0 );
MPL_ASSERT_RELATION( (bitxor_<_1,_0>::value), ==, 1 );
MPL_ASSERT_RELATION( (bitxor_<_0,_1>::value), ==, 1 );
MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_0,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 0) );
MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_1,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 1) );
MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_8,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 8) );
MPL_ASSERT_RELATION( (bitxor_<_0,_ffffffff>::value), ==, (0xffffffff ^ 0) );
MPL_ASSERT_RELATION( (bitxor_<_1,_ffffffff>::value), ==, (0xffffffff ^ 1) );
MPL_ASSERT_RELATION( (bitxor_<_8,_ffffffff>::value), ==, (0xffffffff ^ 8) );
}
MPL_TEST_CASE()
-7
View File
@@ -16,18 +16,11 @@
#include <cassert>
#if defined(BOOST_NO_CXX11_CONSTEXPR)
#define CONSTEXPR_BOOL_TEST(c)
#else
#define CONSTEXPR_BOOL_TEST(c) { static_assert(bool_<c>() == c, "Constexpr for bool_ failed"); }
#endif
#define BOOL_TEST(c) \
{ MPL_ASSERT(( is_same< bool_<c>::value_type, bool > )); } \
{ MPL_ASSERT(( is_same< bool_<c>, c##_ > )); } \
{ MPL_ASSERT(( is_same< bool_<c>::type, bool_<c> > )); } \
{ MPL_ASSERT_RELATION( bool_<c>::value, ==, c ); } \
CONSTEXPR_BOOL_TEST(c) \
BOOST_TEST( bool_<c>() == c ); \
/**/
-8
View File
@@ -28,12 +28,6 @@
/**/
#endif
#if defined(BOOST_NO_CXX11_CONSTEXPR)
#define CONSTEXPR_INTEGRAL_TEST(T, i)
#else
#define CONSTEXPR_INTEGRAL_TEST(T, i) { static_assert(T() == i, "Constexpr for integral constant failed"); }
#endif
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
// agurt 20/nov/06: see http://article.gmane.org/gmane.comp.lib.boost.devel/151065
#define INTEGRAL_WRAPPER_TEST(unused1, i, T) \
@@ -45,7 +39,6 @@
{ MPL_ASSERT(( is_same< next< borland_tested_type >::type, WRAPPER(T,i+1) > )); } \
{ MPL_ASSERT(( is_same< prior< borland_tested_type >::type, WRAPPER(T,i-1) > )); } \
{ MPL_ASSERT_RELATION( (borland_tested_type::value), ==, i ); } \
CONSTEXPR_INTEGRAL_TEST(borland_tested_type, i) \
INTEGRAL_WRAPPER_RUNTIME_TEST(i, T) \
} \
/**/
@@ -56,7 +49,6 @@
{ MPL_ASSERT(( is_same< next< WRAPPER(T,i) >::type, WRAPPER(T,i+1) > )); } \
{ MPL_ASSERT(( is_same< prior< WRAPPER(T,i) >::type, WRAPPER(T,i-1) > )); } \
{ MPL_ASSERT_RELATION( (WRAPPER(T,i)::value), ==, i ); } \
CONSTEXPR_INTEGRAL_TEST(WRAPPER(T,i), i) \
INTEGRAL_WRAPPER_RUNTIME_TEST(i, T) \
/**/
#endif
-21
View File
@@ -14,7 +14,6 @@
#include <boost/mpl/set_c.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/size.hpp>
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/aux_/test.hpp>
@@ -60,18 +59,6 @@ MPL_TEST_CASE()
MPL_ASSERT(( is_same< test::at_c<s1,false>::type, void_ > ));
MPL_ASSERT(( is_same< test::at_c<s2,true>::type, void_ > ));
#endif
typedef begin<s1>::type first1;
typedef end<s1>::type last1;
MPL_ASSERT_RELATION( (distance<first1, last1>::value), ==, 1 );
typedef begin<s2>::type first2;
typedef end<s2>::type last2;
MPL_ASSERT_RELATION( (distance<first2, last2>::value), ==, 1 );
typedef begin<s3>::type first3;
typedef end<s3>::type last3;
MPL_ASSERT_RELATION( (distance<first3, last3>::value), ==, 2 );
}
#endif
@@ -95,12 +82,4 @@ MPL_TEST_CASE()
MPL_ASSERT(( is_same< test::at_c<s1,'z'>::type, void_ > ));
MPL_ASSERT(( is_same< test::at_c<s2,'k'>::type, void_ > ));
#endif
typedef begin<s1>::type first1;
typedef end<s1>::type last1;
MPL_ASSERT_RELATION( (distance<first1, last1>::value), ==, 1 );
typedef begin<s2>::type first2;
typedef end<s2>::type last2;
MPL_ASSERT_RELATION( (distance<first2, last2>::value), ==, 8 );
}