$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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