Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-04-06 13:25:53


Author: eric_niebler
Date: 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
New Revision: 44075
URL: http://svn.boost.org/trac/boost/changeset/44075

Log:
s/result_of::unref/detail::child_traits/
Added:
   branches/proto/v4/boost/proto/detail/child_traits.hpp (contents, props changed)
Removed:
   branches/proto/v4/boost/proto/ref.hpp
Text files modified:
   branches/proto/v4/boost/proto/core.hpp | 1
   branches/proto/v4/boost/proto/expr.hpp | 4
   branches/proto/v4/boost/proto/fusion.hpp | 4
   branches/proto/v4/boost/proto/generate.hpp | 6
   branches/proto/v4/boost/proto/literal.hpp | 6
   branches/proto/v4/boost/proto/matches.hpp | 1
   branches/proto/v4/boost/proto/proto_fwd.hpp | 3
   branches/proto/v4/boost/proto/traits.hpp | 143 +++++++++++++++------------------------
   8 files changed, 65 insertions(+), 103 deletions(-)

Modified: branches/proto/v4/boost/proto/core.hpp
==============================================================================
--- branches/proto/v4/boost/proto/core.hpp (original)
+++ branches/proto/v4/boost/proto/core.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -12,7 +12,6 @@
 
 #include <boost/proto/detail/prefix.hpp>
 #include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/ref.hpp>
 #include <boost/proto/args.hpp>
 #include <boost/proto/tags.hpp>
 #include <boost/proto/eval.hpp>

Added: branches/proto/v4/boost/proto/detail/child_traits.hpp
==============================================================================
--- (empty file)
+++ branches/proto/v4/boost/proto/detail/child_traits.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -0,0 +1,89 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file child_traits.hpp
+/// Traits class for calculating properties of expression node children.
+//
+// Copyright 2008 Eric Niebler. 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)
+
+#ifndef BOOST_PROTO_DETAIL_CHILD_TRAITS_HPP_EAN_04_06_2008
+#define BOOST_PROTO_DETAIL_CHILD_TRAITS_HPP_EAN_04_06_2008
+
+namespace boost { namespace proto
+{
+ namespace detail
+ {
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T>
+ struct child_traits
+ {
+ typedef T value_type; ///< Suitable for return by value
+ typedef T &reference; ///< Suitable for return by reference
+ typedef T const &const_reference; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T>
+ struct child_traits<T &>
+ {
+ typedef T value_type; ///< Suitable for return by value
+ typedef T &reference; ///< Suitable for return by reference
+ typedef T &const_reference; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T>
+ struct child_traits<T const &>
+ {
+ typedef T value_type; ///< Suitable for return by value
+ typedef T const &reference; ///< Suitable for return by reference
+ typedef T const &const_reference; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T, std::size_t N>
+ struct child_traits<T (&)[N]>
+ {
+ typedef T (&value_type)[N]; ///< Suitable for return by value
+ typedef T (&reference)[N]; ///< Suitable for return by reference
+ typedef T (&const_reference)[N]; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T, std::size_t N>
+ struct child_traits<T const (&)[N]>
+ {
+ typedef T const (&value_type)[N]; ///< Suitable for return by value
+ typedef T const (&reference)[N]; ///< Suitable for return by reference
+ typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T, std::size_t N>
+ struct child_traits<T[N]>
+ {
+ typedef T (&value_type)[N]; ///< Suitable for return by value
+ typedef T (&reference)[N]; ///< Suitable for return by reference
+ typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
+ };
+
+ /// \brief Trait for stripping top-level references
+ /// and reference wrappers.
+ template<typename T, std::size_t N>
+ struct child_traits<T const[N]>
+ {
+ typedef T const (&value_type)[N]; ///< Suitable for return by value
+ typedef T const (&reference)[N]; ///< Suitable for return by reference
+ typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
+ };
+ }
+
+}}
+
+#endif

Modified: branches/proto/v4/boost/proto/expr.hpp
==============================================================================
--- branches/proto/v4/boost/proto/expr.hpp (original)
+++ branches/proto/v4/boost/proto/expr.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -24,9 +24,9 @@
     #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
     #include <boost/utility/addressof.hpp>
     #include <boost/proto/proto_fwd.hpp>
- #include <boost/proto/ref.hpp>
     #include <boost/proto/args.hpp>
     #include <boost/proto/traits.hpp>
+ #include <boost/proto/detail/child_traits.hpp>
     #include <boost/proto/detail/suffix.hpp>
 
     #if defined(_MSC_VER) && (_MSC_VER >= 1020)
@@ -59,7 +59,7 @@
         /// INTERNAL ONLY
         ///
         #define BOOST_PROTO_UNREF_CHILD_TYPE(Z, N, DATA) \
- typename result_of::unref<typename Args::BOOST_PP_CAT(child, N)>::const_reference \
+ typename detail::child_traits<typename Args::BOOST_PP_CAT(child, N)>::const_reference \
             /**/
 
         /// INTERNAL ONLY

Modified: branches/proto/v4/boost/proto/fusion.hpp
==============================================================================
--- branches/proto/v4/boost/proto/fusion.hpp (original)
+++ branches/proto/v4/boost/proto/fusion.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -345,7 +345,7 @@
                     typename proto::result_of::child_c<
                         typename Iterator::expr_type
                       , Iterator::index
- >::wrapped_type
+ >::value_type
                 type;
             };
         };
@@ -523,7 +523,7 @@
                     typename proto::result_of::child_c<
                         Sequence
                       , Index::value
- >::wrapped_type
+ >::value_type
                 type;
             };
         };

Modified: branches/proto/v4/boost/proto/generate.hpp
==============================================================================
--- branches/proto/v4/boost/proto/generate.hpp (original)
+++ branches/proto/v4/boost/proto/generate.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -55,9 +55,9 @@
             struct by_value_generator_;
 
         #define BOOST_PROTO_DEFINE_BY_VALUE_TYPE(Z, N, Expr) \
- typename result_of::unref< \
+ typename detail::child_traits< \
                 typename expr_traits<Expr>::args::BOOST_PP_CAT(child, N) \
- >::type \
+ >::value_type \
             /**/
 
         #define BOOST_PROTO_DEFINE_BY_VALUE(Z, N, expr) \
@@ -263,7 +263,7 @@
                 typedef proto::expr<
                     typename expr_traits<Expr>::tag
                   , BOOST_PP_CAT(list, N)<
- // typename result_of::unref<typename expr_traits<Expr>::args::child0>::type, ...
+ // typename detail::child_traits<typename expr_traits<Expr>::args::child0>::value_type, ...
                         BOOST_PP_ENUM(N, BOOST_PROTO_DEFINE_BY_VALUE_TYPE, Expr)
>
> type;

Modified: branches/proto/v4/boost/proto/literal.hpp
==============================================================================
--- branches/proto/v4/boost/proto/literal.hpp (original)
+++ branches/proto/v4/boost/proto/literal.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -43,9 +43,9 @@
             typedef extends<terminal_type, literal<T, Domain>, Domain> base_type;
 
         public:
- typedef typename proto::result_of::unref<T>::type value_type;
- typedef typename proto::result_of::unref<T>::reference reference;
- typedef typename proto::result_of::unref<T>::const_reference const_reference;
+ typedef typename proto::detail::child_traits<T>::value_type value_type;
+ typedef typename proto::detail::child_traits<T>::reference reference;
+ typedef typename proto::detail::child_traits<T>::const_reference const_reference;
 
             template<typename U>
             literal(U &u)

Modified: branches/proto/v4/boost/proto/matches.hpp
==============================================================================
--- branches/proto/v4/boost/proto/matches.hpp (original)
+++ branches/proto/v4/boost/proto/matches.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -34,6 +34,7 @@
     #if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
     #include <boost/type_traits/is_array.hpp>
     #endif
+ #include <boost/type_traits/is_const.hpp>
     #include <boost/type_traits/is_convertible.hpp>
     #include <boost/type_traits/is_reference.hpp>
     #include <boost/type_traits/is_pointer.hpp>

Modified: branches/proto/v4/boost/proto/proto_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/proto/proto_fwd.hpp (original)
+++ branches/proto/v4/boost/proto/proto_fwd.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -437,9 +437,6 @@
         template<typename Expr>
         struct deep_copy;
 
- template<typename T>
- struct unref;
-
         template<typename Expr, typename Context>
         struct eval;
 

Deleted: branches/proto/v4/boost/proto/ref.hpp
==============================================================================
--- branches/proto/v4/boost/proto/ref.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
+++ (empty file)
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-/// \file ref.hpp
-/// Utility for storing a sub-expr by reference
-//
-// Copyright 2008 Eric Niebler. 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)
-
-#ifndef BOOST_PROTO_REF_HPP_EAN_04_01_2005
-#define BOOST_PROTO_REF_HPP_EAN_04_01_2005
-
-#include <boost/proto/detail/prefix.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/proto/proto_fwd.hpp>
-#include <boost/proto/detail/suffix.hpp>
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma warning(push)
-# pragma warning(disable : 4510) // default constructor could not be generated
-# pragma warning(disable : 4512) // assignment operator could not be generated
-# pragma warning(disable : 4610) // user defined constructor required
-#endif
-
-namespace boost { namespace proto
-{
- namespace result_of
- {
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T>
- struct unref
- {
- typedef T type; ///< Suitable for return by value
- typedef T &reference; ///< Suitable for return by reference
- typedef T const &const_reference; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T>
- struct unref<T &>
- {
- typedef T type; ///< Suitable for return by value
- typedef T &reference; ///< Suitable for return by reference
- typedef T &const_reference; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T>
- struct unref<T const &>
- {
- typedef T type; ///< Suitable for return by value
- typedef T const &reference; ///< Suitable for return by reference
- typedef T const &const_reference; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T, std::size_t N>
- struct unref<T (&)[N]>
- {
- typedef T (&type)[N]; ///< Suitable for return by value
- typedef T (&reference)[N]; ///< Suitable for return by reference
- typedef T (&const_reference)[N]; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T, std::size_t N>
- struct unref<T const (&)[N]>
- {
- typedef T const (&type)[N]; ///< Suitable for return by value
- typedef T const (&reference)[N]; ///< Suitable for return by reference
- typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T, std::size_t N>
- struct unref<T[N]>
- {
- typedef T (&type)[N]; ///< Suitable for return by value
- typedef T (&reference)[N]; ///< Suitable for return by reference
- typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
- };
-
- /// \brief Trait for stripping top-level references
- /// and reference wrappers.
- template<typename T, std::size_t N>
- struct unref<T const[N]>
- {
- typedef T const (&type)[N]; ///< Suitable for return by value
- typedef T const (&reference)[N]; ///< Suitable for return by reference
- typedef T const (&const_reference)[N]; ///< Suitable for return by const reference
- };
- }
-
-}}
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma warning(pop)
-#endif
-
-#endif

Modified: branches/proto/v4/boost/proto/traits.hpp
==============================================================================
--- branches/proto/v4/boost/proto/traits.hpp (original)
+++ branches/proto/v4/boost/proto/traits.hpp 2008-04-06 13:25:51 EDT (Sun, 06 Apr 2008)
@@ -41,9 +41,9 @@
     #include <boost/type_traits/remove_const.hpp>
     #include <boost/type_traits/add_reference.hpp>
     #include <boost/proto/proto_fwd.hpp>
- #include <boost/proto/ref.hpp>
     #include <boost/proto/args.hpp>
     #include <boost/proto/tags.hpp>
+ #include <boost/proto/detail/child_traits.hpp>
     #include <boost/proto/transform/pass_through.hpp>
     #include <boost/proto/detail/suffix.hpp>
 
@@ -420,13 +420,9 @@
             /// of a terminal Proto expression.
             ///
             template<typename Expr>
- struct value : child_c<Expr, 0>
- {
- //typedef typename Expr::proto_child0 wrapped_type;
- //typedef typename unref<wrapped_type>::type type;
- //typedef typename unref<wrapped_type>::reference reference;
- //typedef typename unref<wrapped_type>::const_reference const_reference;
- };
+ struct value
+ : child_c<Expr, 0>
+ {};
 
             // TODO left<> and right<> force the instantiation of Expr.
             // Couldn't we partially specialize them on proto::expr< T, A >
@@ -438,13 +434,9 @@
             /// <tt>result_of::left\<Expr\></tt> is equivalent to
             /// <tt>result_of::child_c\<Expr, 0\></tt>.
             template<typename Expr>
- struct left : child_c<Expr, 0>
- {
- //typedef typename Expr::proto_child0 wrapped_type;
- //typedef typename unref<wrapped_type>::type type;
- //typedef typename unref<wrapped_type>::reference reference;
- //typedef typename unref<wrapped_type>::const_reference const_reference;
- };
+ struct left
+ : child_c<Expr, 0>
+ {};
 
             /// \brief A metafunction that returns the type of the right child
             /// of a binary Proto expression.
@@ -453,12 +445,7 @@
             /// <tt>result_of::child_c\<Expr, 1\></tt>.
             template<typename Expr>
             struct right : child_c<Expr, 1>
- {
- //typedef typename Expr::proto_child1 wrapped_type;
- //typedef typename unref<wrapped_type>::type type;
- //typedef typename unref<wrapped_type>::reference reference;
- //typedef typename unref<wrapped_type>::const_reference const_reference;
- };
+ {};
 
         } // namespace result_of
 
@@ -1966,7 +1953,7 @@
         /// \overload
         ///
         template<typename Expr2>
- typename result_of::unref<typename Expr2::proto_base_expr::proto_child0>::reference
+ typename detail::child_traits<typename Expr2::proto_base_expr::proto_child0>::reference
         child(Expr2 &expr2 BOOST_PROTO_DISABLE_IF_IS_CONST(Expr2))
         {
             return expr2.proto_base().child0;
@@ -1975,7 +1962,7 @@
         /// \overload
         ///
         template<typename Expr2>
- typename result_of::unref<typename Expr2::proto_base_expr::proto_child0>::const_reference
+ typename detail::child_traits<typename Expr2::proto_base_expr::proto_child0>::const_reference
         child(Expr2 const &expr2)
         {
             return expr2.proto_base().child0;
@@ -2244,17 +2231,42 @@
             template<typename Expr>
             struct child_c<Expr, N>
             {
- typedef typename Expr::BOOST_PP_CAT(proto_child, N) wrapped_type;
- typedef typename unref<wrapped_type>::type type;
+ /// The raw type of the Nth child as it is stored within
+ /// \c Expr. This may be a value or a reference
+ typedef typename Expr::BOOST_PP_CAT(proto_child, N) value_type;
+
+ /// The "value" type of the child, suitable for return by value,
+ /// computed as follows:
+ /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
+ /// \li <tt>T[N]</tt> becomes <tt>T(&)[N]</tt>
+ /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
+ /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
+ /// \li <tt>T const &</tt> becomes <tt>T</tt>
+ /// \li <tt>T &</tt> becomes <tt>T</tt>
+ /// \li <tt>T</tt> becomes <tt>T</tt>
+ typedef typename detail::child_traits<value_type>::value_type type;
             };
             
             template<typename Expr>
             struct child_c<Expr &, N>
             {
- typedef typename Expr::BOOST_PP_CAT(proto_child, N) wrapped_type;
- typedef typename unref<wrapped_type>::reference type;
+ /// The raw type of the Nth child as it is stored within
+ /// \c Expr. This may be a value or a reference
+ typedef typename Expr::BOOST_PP_CAT(proto_child, N) value_type;
+
+ /// The "reference" type of the child, suitable for return by
+ /// reference, computed as follows:
+ /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
+ /// \li <tt>T[N]</tt> becomes <tt>T(&)[N]</tt>
+ /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
+ /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
+ /// \li <tt>T const &</tt> becomes <tt>T const &</tt>
+ /// \li <tt>T &</tt> becomes <tt>T &</tt>
+ /// \li <tt>T</tt> becomes <tt>T &</tt>
+ typedef typename detail::child_traits<value_type>::reference type;
                 
                 /// INTERNAL ONLY
+ ///
                 static type call(Expr &expr)
                 {
                     return expr.proto_base().BOOST_PP_CAT(child, N);
@@ -2264,75 +2276,28 @@
             template<typename Expr>
             struct child_c<Expr const &, N>
             {
- typedef typename Expr::BOOST_PP_CAT(proto_child, N) wrapped_type;
- typedef typename unref<wrapped_type>::const_reference type;
+ /// The raw type of the Nth child as it is stored within
+ /// \c Expr. This may be a value or a reference
+ typedef typename Expr::BOOST_PP_CAT(proto_child, N) value_type;
+
+ /// The "const reference" type of the child, suitable for return by
+ /// const reference, computed as follows:
+ /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
+ /// \li <tt>T[N]</tt> becomes <tt>T const(&)[N]</tt>
+ /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
+ /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
+ /// \li <tt>T const &</tt> becomes <tt>T const &</tt>
+ /// \li <tt>T &</tt> becomes <tt>T &</tt>
+ /// \li <tt>T</tt> becomes <tt>T const &</tt>
+ typedef typename detail::child_traits<value_type>::const_reference type;
 
                 /// INTERNAL ONLY
+ ///
                 static type call(Expr const &expr)
                 {
                     return expr.proto_base().BOOST_PP_CAT(child, N);
                 }
             };
-
-
- // /// The raw type of the Nth child as it is stored within
- // /// \c Expr. This may be a value, a reference, or a Proto
- // /// <tt>ref_\<\></tt> wrapper.
- // typedef typename Expr::BOOST_PP_CAT(proto_child, N) wrapped_type;
-
- // /// The "value" type of the child, suitable for return by value,
- // /// computed as follows:
- // /// \li <tt>ref_\<T const\></tt> becomes <tt>T</tt>
- // /// \li <tt>ref_\<T\></tt> becomes <tt>T</tt>
- // /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
- // /// \li <tt>T[N]</tt> becomes <tt>T(&)[N]</tt>
- // /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
- // /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
- // /// \li <tt>T const &</tt> becomes <tt>T</tt>
- // /// \li <tt>T &</tt> becomes <tt>T</tt>
- // /// \li <tt>T</tt> becomes <tt>T</tt>
- // typedef typename unref<wrapped_type>::type type;
-
- // /// The "reference" type of the child, suitable for return by
- // /// reference, computed as follows:
- // /// \li <tt>ref_\<T const\></tt> becomes <tt>T const &</tt>
- // /// \li <tt>ref_\<T\></tt> becomes <tt>T &</tt>
- // /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
- // /// \li <tt>T[N]</tt> becomes <tt>T(&)[N]</tt>
- // /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
- // /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
- // /// \li <tt>T const &</tt> becomes <tt>T const &</tt>
- // /// \li <tt>T &</tt> becomes <tt>T &</tt>
- // /// \li <tt>T</tt> becomes <tt>T &</tt>
- // typedef typename unref<wrapped_type>::reference reference;
-
- // /// The "const reference" type of the child, suitable for return by
- // /// const reference, computed as follows:
- // /// \li <tt>ref_\<T const\></tt> becomes <tt>T const &</tt>
- // /// \li <tt>ref_\<T\></tt> becomes <tt>T &</tt>
- // /// \li <tt>T const(&)[N]</tt> becomes <tt>T const(&)[N]</tt>
- // /// \li <tt>T[N]</tt> becomes <tt>T const(&)[N]</tt>
- // /// \li <tt>T(&)[N]</tt> becomes <tt>T(&)[N]</tt>
- // /// \li <tt>R(&)(A0,...)</tt> becomes <tt>R(&)(A0,...)</tt>
- // /// \li <tt>T const &</tt> becomes <tt>T const &</tt>
- // /// \li <tt>T &</tt> becomes <tt>T &</tt>
- // /// \li <tt>T</tt> becomes <tt>T const &</tt>
- // typedef typename unref<wrapped_type>::const_reference const_reference;
-
- // /// INTERNAL ONLY
- // ///
- // static reference call(typename Expr::proto_derived_expr &expr)
- // {
- // return proto::unref(expr.proto_base().BOOST_PP_CAT(child, N));
- // }
-
- // /// INTERNAL ONLY
- // ///
- // static const_reference call(typename Expr::proto_derived_expr const &expr)
- // {
- // return proto::unref(expr.proto_base().BOOST_PP_CAT(child, N));
- // }
- //};
         }
 
     #undef N


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