|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r67287 - in branches/release: . boost boost/algorithm/string boost/archive boost/bimap boost/config boost/detail boost/filesystem boost/functional/hash boost/fusion boost/gil boost/graph boost/integer boost/interprocess boost/intrusive boost/io boost/iostreams boost/math boost/msm boost/numeric/ublas boost/program_options boost/property_tree boost/proto boost/proto/context boost/proto/detail boost/proto/transform boost/python boost/range boost/regex boost/serialization boost/signals boost/signals2 boost/spirit boost/spirit/home boost/spirit/home/karma boost/spirit/home/support boost/statechart boost/system boost/thread boost/tr1 boost/type_traits boost/typeof boost/unordered boost/utility boost/uuid boost/variant boost/wave doc libs libs/algorithm/string libs/array/doc libs/array/test libs/bimap libs/config libs/date_time libs/filesystem libs/functional/hash libs/fusion libs/graph_parallel libs/integer libs/interprocess libs/intrusive libs/iostreams libs/math libs/math/doc libs/math/doc/sf_and_dist libs/mpi/build libs/mpl/doc/refmanual libs/mpl/doc/src/refmanual libs/msm libs/numeric/ublas libs/numeric/ublas/doc libs/program_options libs/property_tree libs/proto/doc/reference/transform libs/proto/test libs/python libs/range libs/regex libs/serialization libs/serialization/doc libs/serialization/example libs/serialization/src libs/serialization/test libs/serialization/vc7ide libs/signals libs/signals2 libs/spirit libs/spirit/classic/example libs/spirit/doc libs/spirit/example libs/spirit/phoenix libs/spirit/test libs/spirit/test/qi libs/statechart libs/static_assert libs/system libs/thread libs/timer libs/tr1 libs/type_traits libs/type_traits/doc libs/typeof/doc libs/unordered libs/utility libs/utility/swap/test libs/uuid libs/wave more more/getting_started status tools tools/bcp tools/boostbook tools/build/v2 tools/inspect tools/quickbook tools/regression tools/regression/src tools/release tools/wave
From: eric_at_[hidden]
Date: 2010-12-17 13:58:49
Author: eric_niebler
Date: 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
New Revision: 67287
URL: http://svn.boost.org/trac/boost/changeset/67287
Log:
merge various proto fixes from trunk
Added:
branches/release/libs/proto/test/make.cpp
- copied unchanged from r67233, /trunk/libs/proto/test/make.cpp
Properties modified:
branches/release/ (props changed)
branches/release/INSTALL (props changed)
branches/release/Jamroot (props changed)
branches/release/LICENSE_1_0.txt (props changed)
branches/release/boost/ (props changed)
branches/release/boost-build.jam (props changed)
branches/release/boost.css (props changed)
branches/release/boost.png (props changed)
branches/release/boost/algorithm/string/ (props changed)
branches/release/boost/archive/ (props changed)
branches/release/boost/array.hpp (props changed)
branches/release/boost/bimap/ (props changed)
branches/release/boost/config/ (props changed)
branches/release/boost/config.hpp (props changed)
branches/release/boost/detail/ (props changed)
branches/release/boost/detail/endian.hpp (props changed)
branches/release/boost/filesystem/ (props changed)
branches/release/boost/filesystem.hpp (props changed)
branches/release/boost/functional/hash/ (props changed)
branches/release/boost/fusion/ (props changed)
branches/release/boost/gil/ (props changed)
branches/release/boost/graph/ (props changed)
branches/release/boost/integer/ (props changed)
branches/release/boost/interprocess/ (props changed)
branches/release/boost/intrusive/ (props changed)
branches/release/boost/io/ (props changed)
branches/release/boost/iostreams/ (props changed)
branches/release/boost/math/ (props changed)
branches/release/boost/math_fwd.hpp (props changed)
branches/release/boost/msm/ (props changed)
branches/release/boost/numeric/ublas/ (props changed)
branches/release/boost/numeric/ublas/functional.hpp (props changed)
branches/release/boost/program_options/ (props changed)
branches/release/boost/property_tree/ (props changed)
branches/release/boost/python/ (props changed)
branches/release/boost/range/ (props changed)
branches/release/boost/regex/ (props changed)
branches/release/boost/serialization/ (props changed)
branches/release/boost/signals/ (props changed)
branches/release/boost/signals2/ (props changed)
branches/release/boost/signals2.hpp (props changed)
branches/release/boost/spirit/ (props changed)
branches/release/boost/spirit/home/ (props changed)
branches/release/boost/spirit/home/karma/ (props changed)
branches/release/boost/spirit/home/support/attributes.hpp (props changed)
branches/release/boost/statechart/ (props changed)
branches/release/boost/system/ (props changed)
branches/release/boost/thread/ (props changed)
branches/release/boost/thread.hpp (props changed)
branches/release/boost/token_functions.hpp (props changed)
branches/release/boost/tr1/ (props changed)
branches/release/boost/type_traits/ (props changed)
branches/release/boost/typeof/message.hpp (props changed)
branches/release/boost/typeof/register_functions.hpp (props changed)
branches/release/boost/typeof/register_functions_iterate.hpp (props changed)
branches/release/boost/typeof/typeof.hpp (props changed)
branches/release/boost/typeof/unsupported.hpp (props changed)
branches/release/boost/unordered/ (props changed)
branches/release/boost/utility/ (props changed)
branches/release/boost/utility/value_init.hpp (props changed)
branches/release/boost/uuid/ (props changed)
branches/release/boost/variant/ (props changed)
branches/release/boost/version.hpp (props changed)
branches/release/boost/wave/ (props changed)
branches/release/bootstrap.bat (props changed)
branches/release/bootstrap.sh (props changed)
branches/release/doc/ (props changed)
branches/release/index.htm (props changed)
branches/release/index.html (props changed)
branches/release/libs/ (props changed)
branches/release/libs/algorithm/string/ (props changed)
branches/release/libs/array/doc/array.xml (props changed)
branches/release/libs/array/test/array0.cpp (props changed)
branches/release/libs/array/test/array2.cpp (props changed)
branches/release/libs/bimap/ (props changed)
branches/release/libs/config/ (props changed)
branches/release/libs/date_time/ (props changed)
branches/release/libs/filesystem/ (props changed)
branches/release/libs/functional/hash/ (props changed)
branches/release/libs/fusion/ (props changed)
branches/release/libs/graph_parallel/ (props changed)
branches/release/libs/integer/ (props changed)
branches/release/libs/interprocess/ (props changed)
branches/release/libs/intrusive/ (props changed)
branches/release/libs/iostreams/ (props changed)
branches/release/libs/libraries.htm (props changed)
branches/release/libs/maintainers.txt (props changed)
branches/release/libs/math/ (props changed)
branches/release/libs/math/doc/ (props changed)
branches/release/libs/math/doc/sf_and_dist/ (props changed)
branches/release/libs/mpi/build/ (props changed)
branches/release/libs/mpl/doc/refmanual/broken-compiler-workarounds.html (props changed)
branches/release/libs/mpl/doc/refmanual/categorized-index-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/cfg-no-preprocessed-headers.html (props changed)
branches/release/libs/mpl/doc/refmanual/composition-and-argument-binding.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-concepts.html (props changed)
branches/release/libs/mpl/doc/refmanual/data-types-miscellaneous.html (props changed)
branches/release/libs/mpl/doc/refmanual/extensible-associative-sequence.html (props changed)
branches/release/libs/mpl/doc/refmanual/inserter-class.html (props changed)
branches/release/libs/mpl/doc/refmanual/tag-dispatched-metafunction.html (props changed)
branches/release/libs/mpl/doc/refmanual/trivial-metafunctions-summary.html (props changed)
branches/release/libs/mpl/doc/src/refmanual/Iterators-Iterator.rst (props changed)
branches/release/libs/msm/ (props changed)
branches/release/libs/numeric/ublas/ (props changed)
branches/release/libs/numeric/ublas/doc/ (props changed)
branches/release/libs/program_options/ (props changed)
branches/release/libs/property_tree/ (props changed)
branches/release/libs/python/ (props changed)
branches/release/libs/range/ (props changed)
branches/release/libs/regex/ (props changed)
branches/release/libs/serialization/ (props changed)
branches/release/libs/serialization/doc/ (props changed)
branches/release/libs/serialization/example/ (props changed)
branches/release/libs/serialization/src/ (props changed)
branches/release/libs/serialization/test/test_diamond_complex.cpp (props changed)
branches/release/libs/serialization/vc7ide/ (props changed)
branches/release/libs/signals/ (props changed)
branches/release/libs/signals2/ (props changed)
branches/release/libs/spirit/ (props changed)
branches/release/libs/spirit/classic/example/ (props changed)
branches/release/libs/spirit/doc/ (props changed)
branches/release/libs/spirit/example/ (props changed)
branches/release/libs/spirit/phoenix/ (props changed)
branches/release/libs/spirit/test/ (props changed)
branches/release/libs/spirit/test/qi/optional.cpp (props changed)
branches/release/libs/statechart/ (props changed)
branches/release/libs/static_assert/ (props changed)
branches/release/libs/system/ (props changed)
branches/release/libs/thread/ (props changed)
branches/release/libs/timer/ (props changed)
branches/release/libs/tr1/ (props changed)
branches/release/libs/type_traits/ (props changed)
branches/release/libs/type_traits/doc/ (props changed)
branches/release/libs/typeof/doc/typeof.qbk (props changed)
branches/release/libs/unordered/ (props changed)
branches/release/libs/utility/ (props changed)
branches/release/libs/utility/swap.html (props changed)
branches/release/libs/utility/swap/test/std_bitset.cpp (props changed)
branches/release/libs/utility/value_init.htm (props changed)
branches/release/libs/utility/value_init_test.cpp (props changed)
branches/release/libs/uuid/ (props changed)
branches/release/libs/wave/ (props changed)
branches/release/more/ (props changed)
branches/release/more/getting_started/ (props changed)
branches/release/rst.css (props changed)
branches/release/status/ (props changed)
branches/release/status/Jamfile.v2 (props changed)
branches/release/status/explicit-failures-markup.xml (props changed)
branches/release/tools/ (props changed)
branches/release/tools/bcp/ (props changed)
branches/release/tools/boostbook/ (props changed)
branches/release/tools/build/v2/ (props changed)
branches/release/tools/inspect/ (props changed)
branches/release/tools/quickbook/ (props changed)
branches/release/tools/regression/ (props changed)
branches/release/tools/regression/src/library_status.cpp (props changed)
branches/release/tools/release/ (props changed)
branches/release/tools/wave/ (props changed)
Text files modified:
branches/release/boost/proto/context/callable.hpp | 4 +-
branches/release/boost/proto/context/default.hpp | 4 +-
branches/release/boost/proto/detail/decltype.hpp | 4 +-
branches/release/boost/proto/extends.hpp | 12 +++++-----
branches/release/boost/proto/proto_fwd.hpp | 12 ++++++++--
branches/release/boost/proto/transform/call.hpp | 2
branches/release/boost/proto/transform/default.hpp | 4 +-
branches/release/boost/proto/transform/make.hpp | 43 +++++++++++++++++++++++++--------------
branches/release/boost/proto/transform/pass_through.hpp | 2
branches/release/libs/proto/doc/reference/transform/make.xml | 12 -----------
branches/release/libs/proto/test/Jamfile.v2 | 1
branches/release/libs/proto/test/noinvoke.cpp | 35 ++++++++++++++++++++++++++++++++
12 files changed, 88 insertions(+), 47 deletions(-)
Modified: branches/release/boost/proto/context/callable.hpp
==============================================================================
--- branches/release/boost/proto/context/callable.hpp (original)
+++ branches/release/boost/proto/context/callable.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -115,7 +115,7 @@
typedef typename proto::result_of::value<Expr const &>::type value_type;
typedef
- typename boost::tr1_result_of<
+ typename BOOST_PROTO_RESULT_OF<
Context(typename Expr::proto_tag, value_type)
>::type
result_type;
@@ -294,7 +294,7 @@
BOOST_PP_REPEAT(N, BOOST_PROTO_CHILD_N_TYPE, Expr)
typedef
- typename boost::tr1_result_of<
+ typename BOOST_PROTO_RESULT_OF<
Context(
typename Expr::proto_tag
BOOST_PP_ENUM_TRAILING_PARAMS(N, child)
Modified: branches/release/boost/proto/context/default.hpp
==============================================================================
--- branches/release/boost/proto/context/default.hpp (original)
+++ branches/release/boost/proto/context/default.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -322,7 +322,7 @@
function_type;
typedef
- typename boost::tr1_result_of<function_type()>::type
+ typename BOOST_PROTO_RESULT_OF<function_type()>::type
result_type;
result_type operator ()(Expr &expr, Context &context) const
@@ -423,7 +423,7 @@
function_type;
typedef
- typename boost::tr1_result_of<
+ typename BOOST_PROTO_RESULT_OF<
function_type(BOOST_PP_ENUM_SHIFTED(N, BOOST_PROTO_DEFAULT_EVAL_TYPE, Expr))
>::type
result_type;
Modified: branches/release/boost/proto/detail/decltype.hpp
==============================================================================
--- branches/release/boost/proto/detail/decltype.hpp (original)
+++ branches/release/boost/proto/detail/decltype.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -336,7 +336,7 @@
// member object pointers.
template<typename T, typename Void = void>
struct result_of_
- : boost::tr1_result_of<T>
+ : BOOST_PROTO_RESULT_OF<T>
{};
template<typename T, typename U, typename V>
@@ -486,7 +486,7 @@
{
typedef typename uncvref<PMF>::type pmf_type;
typedef typename classtypeof<pmf_type>::type V;
- typedef typename boost::tr1_result_of<pmf_type(T)>::type result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<pmf_type(T)>::type result_type;
memfun(T t, PMF p)
: obj(t)
Modified: branches/release/boost/proto/extends.hpp
==============================================================================
--- branches/release/boost/proto/extends.hpp (original)
+++ branches/release/boost/proto/extends.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -74,7 +74,7 @@
///
#define BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, Const) \
BOOST_PP_IF(N, BOOST_PROTO_TEMPLATE_YES_, BOOST_PROTO_TEMPLATE_NO_)(Z, N) \
- typename boost::tr1_result_of< \
+ typename BOOST_PROTO_RESULT_OF< \
proto_generator( \
typename boost::proto::result_of::BOOST_PP_CAT(funop, N)< \
proto_derived_expr Const() \
@@ -103,7 +103,7 @@
///
#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const) \
template<typename... A> \
- typename boost::tr1_result_of< \
+ typename BOOST_PROTO_RESULT_OF< \
proto_generator( \
typename boost::proto::result_of::funop< \
proto_derived_expr Const()(A const &...) \
@@ -202,7 +202,7 @@
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_(This, Const, Typename) \
BOOST_PROTO_DISABLE_MSVC_C4522 \
- Typename() boost::tr1_result_of< \
+ Typename() BOOST_PROTO_RESULT_OF< \
Typename() This::proto_generator( \
Typename() boost::proto::base_expr< \
Typename() This::proto_domain \
@@ -251,7 +251,7 @@
///
#define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(ThisConst, ThatConst) \
template<typename A> \
- typename boost::tr1_result_of< \
+ typename BOOST_PROTO_RESULT_OF< \
proto_generator( \
typename boost::proto::base_expr< \
proto_domain \
@@ -317,7 +317,7 @@
///
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(ThisConst, ThatConst) \
template<typename A> \
- typename boost::tr1_result_of< \
+ typename BOOST_PROTO_RESULT_OF< \
proto_generator( \
typename boost::proto::base_expr< \
proto_domain \
@@ -371,7 +371,7 @@
struct result \
{ \
typedef \
- typename boost::tr1_result_of< \
+ typename BOOST_PROTO_RESULT_OF< \
proto_generator( \
typename boost::proto::result_of::funop< \
Sig \
Modified: branches/release/boost/proto/proto_fwd.hpp
==============================================================================
--- branches/release/boost/proto/proto_fwd.hpp (original)
+++ branches/release/boost/proto/proto_fwd.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -83,6 +83,12 @@
# endif
#endif
+#ifdef BOOST_PROTO_USE_NORMAL_RESULT_OF
+# define BOOST_PROTO_RESULT_OF boost::result_of
+#else
+# define BOOST_PROTO_RESULT_OF boost::tr1_result_of
+#endif
+
namespace boost { namespace proto
{
namespace detail
@@ -154,8 +160,8 @@
/// INTERNAL ONLY
///
#define BOOST_PROTO_UNCVREF(X) \
- typename boost::proto::detail::uncvref<X>::type \
- /**/
+ typename boost::proto::detail::uncvref<X>::type \
+ /**/
struct _default;
@@ -744,7 +750,7 @@
//namespace exops
//{}
- namespace exops = exprns_;
+ namespace exops = exprns_;
}} // namespace boost::proto
Modified: branches/release/boost/proto/transform/call.hpp
==============================================================================
--- branches/release/boost/proto/transform/call.hpp (original)
+++ branches/release/boost/proto/transform/call.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -91,7 +91,7 @@
struct impl2
: transform_impl<Expr, State, Data>
{
- typedef typename boost::tr1_result_of<Fun()>::type result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<Fun()>::type result_type;
result_type operator()(
typename impl2::expr_param
Modified: branches/release/boost/proto/transform/default.hpp
==============================================================================
--- branches/release/boost/proto/transform/default.hpp (original)
+++ branches/release/boost/proto/transform/default.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -480,7 +480,7 @@
function_type;
typedef
- typename boost::tr1_result_of<function_type()>::type
+ typename BOOST_PROTO_RESULT_OF<function_type()>::type
result_type;
result_type operator ()(
@@ -613,7 +613,7 @@
function_type;
typedef
- typename boost::tr1_result_of<
+ typename BOOST_PROTO_RESULT_OF<
function_type(BOOST_PP_ENUM_SHIFTED_PARAMS(N, r))
>::type
result_type;
Modified: branches/release/boost/proto/transform/make.hpp
==============================================================================
--- branches/release/boost/proto/transform/make.hpp (original)
+++ branches/release/boost/proto/transform/make.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -82,7 +82,7 @@
template<
typename T
, typename Expr, typename State, typename Data
- , bool Applied, bool IsTransform = is_transform<T>::value
+ , bool Applied
>
struct nested_type_if
{
@@ -90,15 +90,8 @@
static bool const applied = false;
};
- template<typename T, typename Expr, typename State, typename Data, bool Applied>
- struct nested_type_if<T, Expr, State, Data, Applied, true>
- : uncvref<typename T::template impl<Expr, State, Data>::result_type>
- {
- static bool const applied = true;
- };
-
template<typename T, typename Expr, typename State, typename Data>
- struct nested_type_if<T, Expr, State, Data, true, false>
+ struct nested_type_if<T, Expr, State, Data, true>
: nested_type<T>
{
static bool const applied = true;
@@ -345,7 +338,9 @@
BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)
, typename Expr, typename State, typename Data
>
- struct make_<R<BOOST_PP_ENUM_PARAMS(N, A)>, Expr, State, Data
+ struct make_<
+ R<BOOST_PP_ENUM_PARAMS(N, A)>
+ , Expr, State, Data
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(N)
>
: nested_type_if<
@@ -360,8 +355,10 @@
BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)
, typename Expr, typename State, typename Data
>
- struct make_<noinvoke<R<BOOST_PP_ENUM_PARAMS(N, A)> >, Expr, State, Data
- BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(N)
+ struct make_<
+ noinvoke<R<BOOST_PP_ENUM_PARAMS(N, A)> >
+ , Expr, State, Data
+ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(1)
>
{
typedef R<BOOST_PP_ENUM(N, TMP1, ~)> type;
@@ -378,8 +375,15 @@
BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)
, typename Expr, typename State, typename Data
>
- struct make_if_<R(BOOST_PP_ENUM_PARAMS(N, A)), Expr, State, Data, CT_not_callable>
- : uncvref<typename when<_, R(BOOST_PP_ENUM_PARAMS(N, A))>::template impl<Expr, State, Data>::result_type>
+ struct make_if_<
+ R(BOOST_PP_ENUM_PARAMS(N, A))
+ , Expr, State, Data
+ , CT_not_callable
+ >
+ : uncvref<
+ typename when<_, R(BOOST_PP_ENUM_PARAMS(N, A))>
+ ::template impl<Expr, State, Data>::result_type
+ >
{
static bool const applied = true;
};
@@ -389,8 +393,15 @@
BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)
, typename Expr, typename State, typename Data
>
- struct make_if_<R(*)(BOOST_PP_ENUM_PARAMS(N, A)), Expr, State, Data, CT_not_callable>
- : uncvref<typename when<_, R(BOOST_PP_ENUM_PARAMS(N, A))>::template impl<Expr, State, Data>::result_type>
+ struct make_if_<
+ R(*)(BOOST_PP_ENUM_PARAMS(N, A))
+ , Expr, State, Data
+ , CT_not_callable
+ >
+ : uncvref<
+ typename when<_, R(BOOST_PP_ENUM_PARAMS(N, A))>
+ ::template impl<Expr, State, Data>::result_type
+ >
{
static bool const applied = true;
};
Modified: branches/release/boost/proto/transform/pass_through.hpp
==============================================================================
--- branches/release/boost/proto/transform/pass_through.hpp (original)
+++ branches/release/boost/proto/transform/pass_through.hpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -178,7 +178,7 @@
expr_type;
typedef typename unref_expr::proto_generator proto_generator;
- typedef typename boost::tr1_result_of<proto_generator(expr_type)>::type result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
result_type const operator ()(
typename pass_through_impl::expr_param e
Modified: branches/release/libs/proto/doc/reference/transform/make.xml
==============================================================================
--- branches/release/libs/proto/doc/reference/transform/make.xml (original)
+++ branches/release/libs/proto/doc/reference/transform/make.xml 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -243,18 +243,6 @@
<para>
If any substitutions took place in the above step and
<computeroutput>
- <classname>is_transform</classname><S<X<subscript>0</subscript>',...X<subscript>n</subscript>'> >::value
- </computeroutput> is
- <computeroutput>true</computeroutput>, the result type is
- <computeroutput>
- boost::result_of<<classname>proto::when</classname><<classname>_</classname>, S<X<subscript>0</subscript>',...X<subscript>n</subscript>'> >(Expr, State, Data)>::type
- </computeroutput>.
- </para>
- </listitem>
- <listitem>
- <para>
- Otherwise, If any substitutions took place in the above step and
- <computeroutput>
S<X<subscript>0</subscript>',...X<subscript>n</subscript>'>
</computeroutput> has a nested
<computeroutput>type</computeroutput> typedef, the result type is
Modified: branches/release/libs/proto/test/Jamfile.v2
==============================================================================
--- branches/release/libs/proto/test/Jamfile.v2 (original)
+++ branches/release/libs/proto/test/Jamfile.v2 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -30,6 +30,7 @@
[ run proto_fusion_s.cpp ]
[ run toy_spirit.cpp ]
[ run toy_spirit2.cpp ]
+ [ run make.cpp ]
[ run noinvoke.cpp ]
[ run mem_ptr.cpp : : : <toolset>msvc:<cxxflags>/wd4355 ]
[ compile bug2407.cpp ]
Modified: branches/release/libs/proto/test/noinvoke.cpp
==============================================================================
--- branches/release/libs/proto/test/noinvoke.cpp (original)
+++ branches/release/libs/proto/test/noinvoke.cpp 2010-12-17 13:58:47 EST (Fri, 17 Dec 2010)
@@ -43,6 +43,32 @@
>
{};
+template<typename T, typename U>
+struct select2nd
+{
+ typedef U type;
+};
+
+struct Test3
+ : proto::when<
+ _
+ // This add_pointer gets invoked because a substitution takes place
+ // within it.
+ , select2nd<
+ void
+ , proto::noinvoke<
+ // This remove_pointer invocation is bloked by noinvoke
+ select2nd<
+ void
+ // This add_pointer invocation is *not* blocked by noinvoke
+ , boost::add_pointer<_>
+ >
+ >
+ >()
+ >
+{};
+
+
void test_noinvoke()
{
typedef proto::terminal<int>::type Int;
@@ -65,6 +91,15 @@
));
boost::remove_pointer<Int *> * t2 = Test2()(i);
+
+ BOOST_MPL_ASSERT((
+ boost::is_same<
+ boost::result_of<Test3(Int)>::type
+ , select2nd<void, Int *>
+ >
+ ));
+
+ select2nd<void, Int *> t3 = Test3()(i);
}
using namespace boost::unit_test;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk