$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r60239 - in sandbox/statistics/detail/assign: boost/assign/auto_size/detail libs/assign/example
From: erwann.rogard_at_[hidden]
Date: 2010-03-06 11:13:48
Author: e_r
Date: 2010-03-06 11:13:48 EST (Sat, 06 Mar 2010)
New Revision: 60239
URL: http://svn.boost.org/trac/boost/changeset/60239
Log:
m
Text files modified: 
   sandbox/statistics/detail/assign/boost/assign/auto_size/detail/expr.hpp |    29 ++++++++++++++++++++---------           
   sandbox/statistics/detail/assign/libs/assign/example/ref_list_of.cpp    |     6 ++----                                  
   2 files changed, 22 insertions(+), 13 deletions(-)
Modified: sandbox/statistics/detail/assign/boost/assign/auto_size/detail/expr.hpp
==============================================================================
--- sandbox/statistics/detail/assign/boost/assign/auto_size/detail/expr.hpp	(original)
+++ sandbox/statistics/detail/assign/boost/assign/auto_size/detail/expr.hpp	2010-03-06 11:13:48 EST (Sat, 06 Mar 2010)
@@ -19,8 +19,10 @@
 #include <boost/iterator/iterator_concepts.hpp>
 #include <boost/next_prior.hpp>
 #include <boost/type_traits.hpp>
+#include <boost/utility/enable_if.hpp>
 #include <boost/range.hpp>
 #include <boost/assign/list_of.hpp> // needed for assign_reference
+#include <boost/assign/auto_size/detail/has_static_size.hpp>
 #include <boost/assign/auto_size/detail/assign_reference_copy.hpp>
 #include <boost/assign/auto_size/detail/policy.hpp>
 #include <boost/assign/auto_size/detail/types.hpp>
@@ -165,6 +167,10 @@
         struct result_of_range2 : result_of_range<
             K, typename boost::range_iterator<Range>::type>{};
 
+		template<typename Range>
+        struct result_of_range3 : result_of_range2<
+            boost::remove_const<Range>::type::static_size, Range>{};
+
         public:       
 
         typedef typename boost::mpl::equal_to<int_n_,int_1_>::type is_first_;
@@ -211,14 +217,19 @@
             );
         }
 
-/*
-TODO
-		//template<typename Range>
-        //range(Range& r)	// enable if has_static_size
-
-		//template<typename Range>
-        //range(const Range& r)	// enable if has_static_size
-*/
+		template<typename Range>
+        typename boost::lazy_enable_if_c<
+            has_static_size<Range>::value,
+            result_of_range3<Range>
+        >::type
+        range(Range& r){ return this->range<Range::static_size>(r); }
+
+		template<typename Range>
+        typename boost::lazy_enable_if_c<
+            has_static_size<Range>::value,
+            result_of_range3<const Range>
+        >::type
+        range(const Range& r){ return this->range<Range::static_size>(r); }
 
         mutable previous_ previous;
         mutable ref_ ref;
@@ -230,7 +241,7 @@
 
     // ---- write_to_array ---- //
         
-	// Some library extension may one day need Nshift, not at present
+    // Some library extension may one day need Nshift, but not at present
     template<int Nshift,typename A,typename E,typename T,int N,
             template<typename> class R,typename P,bool F>
     void write_to_array(A& a,const expr<E,T,N,R,P,F>& e,false_ /*exit*/){
Modified: sandbox/statistics/detail/assign/libs/assign/example/ref_list_of.cpp
==============================================================================
--- sandbox/statistics/detail/assign/libs/assign/example/ref_list_of.cpp	(original)
+++ sandbox/statistics/detail/assign/libs/assign/example/ref_list_of.cpp	2010-03-06 11:13:48 EST (Sat, 06 Mar 2010)
@@ -33,8 +33,6 @@
 
     ints_ ints;
     {    
-        // cref_list_of_csv
-
             int a=1, b=2, c=3;
 
                 {
@@ -43,8 +41,8 @@
             typedef boost::mpl::int_<3> K_;
                     BOOST_AUTO(tmp,
                 cref_list_of(a)(b)(c)
-                    .range<3>(
-                        ints
+                    .range(
+                        array
                     )
             );