$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r80614 - in sandbox/variadic_templates/sandbox: array_dyn slim slim/slim slim/slim/include slim/slim/include/slim slim/slim/include/slim/support slim/slim/include/slim/support/internal slim/test
From: cppljevans_at_[hidden]
Date: 2012-09-21 09:26:33
Author: cppljevans
Date: 2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
New Revision: 80614
URL: http://svn.boost.org/trac/boost/changeset/80614
Log:
1) benchmark for slim vector
2) slight mods to slim/include to allow clang compilation
3) slight mod to reduce.axis.cpp test driver
Added:
   sandbox/variadic_templates/sandbox/slim/
   sandbox/variadic_templates/sandbox/slim/slim/
   sandbox/variadic_templates/sandbox/slim/slim/include/
   sandbox/variadic_templates/sandbox/slim/slim/include/slim/
   sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/
   sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/deduce.hpp   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/internal/
   sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/internal/base.hpp   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/test/
   sandbox/variadic_templates/sandbox/slim/test/Makefile   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/test/compiler_values.txt   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.cpp   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.clangxx.txt   (contents, props changed)
   sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.gcc4_8n.txt   (contents, props changed)
Text files modified: 
   sandbox/variadic_templates/sandbox/array_dyn/reduce_axis.cpp |     2 +-                                      
   1 files changed, 1 insertions(+), 1 deletions(-)
Modified: sandbox/variadic_templates/sandbox/array_dyn/reduce_axis.cpp
==============================================================================
--- sandbox/variadic_templates/sandbox/array_dyn/reduce_axis.cpp	(original)
+++ sandbox/variadic_templates/sandbox/array_dyn/reduce_axis.cpp	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -212,7 +212,7 @@
                     , oper_axis
                     )
                   );
-                std::cout<<"arr_reduce=\n";
+                std::cout<<":arr_reduce=\n";
                 std::cout<<arr_reduce<<".\n";
             }
         }//exit for(mean_axis...)
Added: sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/deduce.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/deduce.hpp	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,173 @@
+/*==============================================================================
+    Copyright (c) 2007 Tobias Schwinger
+    Copyright (c) 2009-2011 Christopher Schmidt
+
+    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 SLIM_SUPPORT_DEDUCE_HPP
+#define SLIM_SUPPORT_DEDUCE_HPP
+
+#include <slim/support/internal/base.hpp>
+#include <slim/support/internal/result_of.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#ifndef SLIM_NO_RVALUE_REFERENCES
+#   include <boost/mpl/not.hpp>
+#   include <boost/type_traits/is_array.hpp>
+#endif
+#include <boost/type_traits/is_same.hpp>
+#include <boost/ref.hpp>
+
+namespace slim
+{
+    namespace traits
+    {
+#if BOOST_WORKAROUND(BOOST_MSVC,==1600)
+        template<typename T>
+        struct deduce_stage2
+        {
+            typedef T type;
+        };
+
+        template<typename T>
+        struct deduce
+          : deduce_stage2<T>
+        {};
+#else
+        template<typename T>
+        struct deduce
+        {
+            typedef T type;
+        };
+#endif
+
+        template<typename T>
+        struct deduce<boost::reference_wrapper<T> >
+        {
+            typedef T& type;
+        };
+
+#define SLIM_DEDUCE_CV_REF_SPECIALIZATION(MODIFIER,DEDUCE)                      \
+        template<typename T>                                                    \
+        struct DEDUCE<T MODIFIER>                                               \
+        {                                                                       \
+            typedef detail::is_po_callable<T MODIFIER> is_po_callable;          \
+                                                                                \
+            typedef typename                                                    \
+                boost::mpl::eval_if_c<                                          \
+                    is_po_callable::type::value                                 \
+                  , boost::mpl::if_c<                                           \
+                        is_po_callable::is_pointer::value                       \
+                      , T                                                       \
+                      , T MODIFIER                                              \
+                    >                                                           \
+                  , deduce<T>                                                   \
+                >::type                                                         \
+            type;                                                               \
+        };                                                                      \
+                                                                                \
+        template<typename T>                                                    \
+        struct deduce<boost::reference_wrapper<T> MODIFIER>                     \
+        {                                                                       \
+            typedef T& type;                                                    \
+        };
+
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(volatile&,deduce)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(const volatile&,deduce)
+
+#if BOOST_WORKAROUND(BOOST_MSVC,==1600)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(volatile&&,deduce_stage2)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(
+            const volatile&&,deduce_stage2)
+
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(&,deduce)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(const&,deduce)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(&&,deduce_stage2)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(const&&,deduce_stage2)
+#else
+#   ifndef SLIM_NO_RVALUE_REFERENCES
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(volatile&&,deduce)
+        SLIM_DEDUCE_CV_REF_SPECIALIZATION(const volatile&&,deduce)
+#   endif
+        SLIM_ALL_CV_REF_COMBINATIONS(
+            SLIM_DEDUCE_CV_REF_SPECIALIZATION,deduce)
+#endif
+
+#undef SLIM_DEDUCE_CV_REF_SPECIALIZATION
+
+#define SLIM_DEDUCE_ARRAY_SPECIALIZATION(MODIFIER1,MODIFIER2,MODIFIER3)         \
+        template<typename T, int N>                                             \
+        struct deduce<T MODIFIER1[N]>                                           \
+        {                                                                       \
+            typedef T MODIFIER2(MODIFIER3 type)[N];                             \
+        };
+
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(BOOST_PP_EMPTY(),const,&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(const,const,&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(volatile,volatile,&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(
+            const volatile,const volatile,&)
+
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION((&),BOOST_PP_EMPTY(),&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(const(&),const,&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(volatile(&),volatile,&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(
+            const volatile(&),const volatile,&)
+
+#ifndef SLIM_NO_RVALUE_REFERENCES
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION((&&),BOOST_PP_EMPTY(),&&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(const(&&),const,&&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(volatile(&&),volatile,&&)
+        SLIM_DEDUCE_ARRAY_SPECIALIZATION(
+            const volatile(&&),const volatile,&&)
+#endif
+    }
+
+    namespace detail
+    {
+        template<typename T>
+        struct deduce_ref
+        {
+            typedef typename traits::deduce<T>::type deduced;
+            typedef
+                boost::mpl::and_<
+                    is_lrref<T>
+                  , boost::is_same<typename identity<T>::type,deduced>
+                >
+            is_regular_reference;
+
+#ifdef SLIM_NO_RVALUE_REFERENCES
+            typedef typename
+                boost::mpl::if_c<
+                    is_regular_reference::value
+                  , T
+                  , typename add_lref<deduced>::type
+                >::type
+            type;
+#else
+            //8.5.3p5...
+            typedef typename
+                boost::mpl::eval_if_c<
+                    is_regular_reference::value
+                  , boost::mpl::if_c<
+                        boost::mpl::or_<
+                            boost::mpl::not_<is_rref<T> >
+                          , boost::is_class<deduced>
+                          , boost::is_array<deduced>
+                        >::value
+                      , T
+                      , deduced&
+                    >
+                  , add_lref<deduced>
+                >::type
+            type;
+#endif
+        };
+    }
+}
+
+#endif
Added: sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/internal/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/slim/include/slim/support/internal/base.hpp	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,28 @@
+/*==============================================================================
+    Copyright (c) 2010-2011 Christopher Schmidt
+
+    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 SLIM_SUPPORT_INTERNAL_BASE_HPP
+#define SLIM_SUPPORT_INTERNAL_BASE_HPP
+
+#define SLIM_V3
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+#   define SLIM_NO_RVALUE_REFERENCES
+#elif !defined(SLIM_NO_RVALUE_REFERENCES) &&                                    \
+    BOOST_WORKAROUND(__GNUC__,==4)&&                                            \
+    BOOST_WORKAROUND(__GNUC_MINOR__,<6) && !defined(__clang__)
+#   error The C++11 extension of your compiler is not supported!
+#endif
+
+#include <slim/support/internal/base/config.hpp>
+#include <slim/support/internal/base/ref.hpp>
+#include <slim/support/internal/base/assert.hpp>
+
+#endif
Added: sandbox/variadic_templates/sandbox/slim/test/Makefile
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/Makefile	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,87 @@
+MAIN=test
+MAIN=tuple.benchmark
+
+DIR.root := $(shell dirup_dir_file.pl $(PWD) root.imk)
+
+HOW=gcc4_8n
+HOW=clangxx
+
+HOWS=gcc4_8n clangxx
+
+include $(DIR.root)/root.imk
+
+SLIM_DIR=../slim/include 
+INCS:= -I$(SLIM_DIR) $(INCS)
+
+.PHONY: tuple.benchmark.report
+tuple.benchmark.report: tuple.benchmark.time.$(HOW)
+	echo "DATE:" `date` >$@
+	python time-report_tbl.py $(HOW) < $< >> $@
+
+.PHONY: tuple.benchmark.time.how
+tuple.benchmark.time.how: tuple.benchmark.time.$(HOW)
+
+TIME_FORMAT="user:%U\nsystem:%S\nelapsed:%e"
+TUPLE_MAX_SIZE=16
+TUPLE_MIN_SIZE=4
+TUPLE_DEL_SIZE=4
+TUPLE_SIZES=$(TUPLE_MAX_SIZE) 
+
+tuple.benchmark.time.$(HOW).txt: tuple.benchmark.cpp
+	-rm $@
+	echo -n "COMPILER_VERSION:" >>$@ ; \
+	echo $(HOW) >>$@ ; \
+	for VALU_AT in -DVALU_AT ; do \
+	  echo "VALU_AT:"$$VALU_AT >>$@ ; \
+	  for TUPLE_TEST_IMPL in 0 1 ; do \
+	    echo "TUPLE_TEST_IMPL:"$$TUPLE_TEST_IMPL >>$@ ; \
+	    for TUPLE_SIZE in $(TUPLE_SIZES) ; do \
+	      echo "TUPLE_SIZE:"$$TUPLE_SIZE >>$@ ; \
+	      for LAST_LESS in `python ./first_to_last_ints.py $(TUPLE_MIN_SIZE) $(TUPLE_DEL_SIZE) $$TUPLE_SIZE ` ; do \
+	        echo "LAST_LESS:"$$LAST_LESS >>$@ ; \
+	        time --format $(TIME_FORMAT) $(COMPILE.$(HOW)) \
+                  $(INCS) \
+                  -DTUPLE_TEST_IMPL=$$TUPLE_TEST_IMPL \
+                  -DTUPLE_SIZE=$$TUPLE_SIZE \
+                  -DLAST_LESS=$$LAST_LESS \
+                  $$VALU_AT tuple.benchmark.cpp 2>>$@ ; \
+	      done \
+	    done \
+	  done \
+	done \
+	#
+
+.PHONY: tuple.benchmark.time
+tuple.benchmark.time:
+	for COMPILE_HOW in $(HOWS) ; do \
+	  make -Wtuple.benchmark.cpp HOW=$$COMPILE_HOW tuple.benchmark.time.$$COMPILE_HOW ; \
+	done
+
+.PHONY: compiler_value.txt
+compiler_value.txt:
+	echo $(HOW)":" >>compiler_values.txt
+	echo -n "  * version=" >>compiler_values.txt
+	  $(COMPILE.$(HOW)) --version >>compiler_values.txt
+	echo    "  * command="$(COMPILE.$(HOW)) >>compiler_values.txt
+
+.PHONY: compiler_values.txt
+compiler_values.txt:
+	echo "INCS:"$(INCS) >$@
+	for COMPILE_HOW in $(HOWS) ; do \
+	  make compiler_value.txt HOW=$$COMPILE_HOW ; \
+	done \
+	#
+
+.PHONY: nest_loop
+nest_loop:
+	for TUPLE_SIZE in $(TUPLE_SIZES) ; do \
+	  echo "TUPLE_SIZE:"$$TUPLE_SIZE ; \
+	  for LAST_LESS in `python ./first_to_last_ints.py $(TUPLE_MIN_SIZE) 2 $$TUPLE_SIZE ` ; do \
+	    echo "  LAST_LESS:"$$LAST_LESS ; \
+	  done \
+	done \
+	#
+
+.PHONY: echo
+echo:
+	echo $(COMPILE)
Added: sandbox/variadic_templates/sandbox/slim/test/compiler_values.txt
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/compiler_values.txt	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,13 @@
+INCS:-I../slim/include -I/home/evansl/prog_dev/boost-svn/ro/boost_1_49_0
+gcc4_8n:
+  * version=g++ (GCC) 4.8.0 20120624 (experimental)
+Copyright (C) 2012 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+  * command=/home/evansl/download/gcc/4.8-20120624/install/bin/g++ -c -Wall -Wstrict-overflow -ftemplate-depth-300 -ftemplate-backtrace-limit=0 -std=gnu++11
+clangxx:
+  * version=clang version 3.1 (trunk 150294)
+Target: x86_64-unknown-linux-gnu
+Thread model: posix
+  * command=/home/evansl/download/llvm/svn/build/Debug+Asserts/bin/clang -c -cxx-isystem /home/evansl/download/llvm/svn/llvm/projects/libcxx/include -std=c++11
Added: sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.cpp	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,207 @@
+#include "tuple_test_impl_macros.hpp"
+
+#if !defined(TUPLE_SIZE)
+  //This only used when not running several benchmarks where
+  //macro values are set on command line with -DMACRO=VALUE.
+  //See tuple.benchmark.mk.
+  #define TUPLE_TEST_IMPL TUPLE_TEST_HORIZONTAL
+    //TUPLE_TEST_IMPL selects the tuple implementation method.
+    //TUPLE_TEST_VERTICAL selects the preprocessor generated
+    //  tuples.
+    //TUPLE_TEST_HORIZONTAL selects the variadic template generated
+    //  tuples (using a multiple inheritance method similar to
+    //  that mentioned here:
+    //    https://groups.google.com/forum/?fromgroups=#!msg/comp.std.c++/_-6X_xZlKlA/3Fw9_QnZSWQJ
+    //  with subject:
+    //    Variadic Templates in C++0x need some additional features to come closer to fulfilling their promise 
+    //  and date:
+    //    01/12/2009
+    //  )
+  #define TUPLE_SIZE 16
+    //^size of the tuple used.
+    //Also, the number of at_test calls in test_row<I,J>::exec.
+  #define LAST_LESS 16
+    //^determines number of instantiations of test_col and test_row.
+  #define VALU_AT
+    //^Decides whether value of tuple elements is retrieved
+    //or some dummy value is used
+    //in test_row<I,J>::at_test.
+  //#define TRACE_BENCHMARK
+  #ifdef TRACE_BENCHMARK
+    #define USE_DEMANGLER
+    #ifdef USE_DEMANGLER
+      #include <boost/utility/demangled_type_name.hpp>
+    #endif
+  #endif
+#endif
+  //#define VERT_AMORT
+    //Purpose:
+    //  Account for the amortized cost of
+    //  amortized::make_indexes
+  //Use something less than TUPLE_SIZE as LAST_LESS
+  //if compile times become too large.
+#define LAST_RC ((LAST_LESS>TUPLE_SIZE)?TUPLE_SIZE:LAST_LESS)
+#define LAST_ROW LAST_RC
+#define LAST_COL LAST_RC
+    //test_row<I,J>::exec for I=0...LAST_ROW-1, for J=0...LAST_COL-1
+    //is called.
+
+/*=============================================================================
+    Copyright (c) 2009 Christopher Schmidt
+
+    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)
+==============================================================================*/
+
+//OriginalVersion:
+//  On 2009-09-27, downloaded from attachment to:
+//    http://article.gmane.org/gmane.comp.lib.boost.devel/194407
+//Purpose:
+//  Timing benchmark for 2 methods of tuple implmentation.
+//  The method used is dependent on macro, TUPLE_TEST_IMPL:
+//    when TUPLE_TEST_IMPL == TUPLE_TEST_VERTICAL:
+//      This method uses the boost preprocessor to generate
+//      member variables for the tuple elements:
+//        HI tI;
+//      where I=0...N-1, where N is the size of the tuple.
+//    when TUPLE_TEST_IMPL == TUPLE_TEST_HORIZONTAL:
+//      This method uses multiple inheritance of the
+//      tuple elements "paired" with a key in a
+//      superclass:
+//        element<int_key<I>,HI>
+//      where I is as for the 'TUPLE_TEST_IMPL == TUPLE_TEST_VERTICAL' method and
+//      where the member variable is:
+//        HI element<int_key<I>,HI>::a;
+//
+
+#if TUPLE_TEST_IMPL == TUPLE_TEST_HORIZONTAL
+  #define SLIM_TAGGED_VECTOR
+#else
+#endif
+
+//#include <slim/container/vector/detail/pp/vector_n.hpp>
+#include <slim/container/vector.hpp>
+
+template<int Value>
+struct int_value //values stored in tuple
+{
+    int_value(void)
+    : value(Value)
+    {}
+    int const value;
+};
+
+template<int I,int J, int Max, typename... Args>
+struct make_tuple:
+	make_tuple<I,J,Max-1,int_value<I*TUPLE_SIZE*TUPLE_SIZE+J*TUPLE_SIZE+Max>,Args...>
+{};
+template<int I,int J, typename... Args>
+struct make_tuple<I,J,0, Args...>
+{
+	typedef slim::vector<Args...> type;
+};
+
+#include <iostream>
+
+template<int I,int J=0>
+struct test_row
+{
+ private:
+	typedef typename make_tuple<I, J, TUPLE_SIZE>::type tuple_type;
+
+	template<int K>
+	static int at_test(tuple_type& t,boost::mpl::int_<K> key)
+	{
+		int const value=
+#ifdef VALU_AT
+                  #if TUPLE_TEST_IMPL == TUPLE_TEST_HORIZONTAL
+		    slim::detail::at_helper<K>(t)
+                  #else
+                    t.at_impl(key)
+                  #endif
+                    .value
+#else
+		  K
+#endif
+		;
+	      #ifdef TRACE_BENCHMARK
+		std::cout<<"at_test:K="<<K<<"\n";
+	      #endif
+		return value+at_test(t,boost::mpl::int_<K+1>());
+	}
+	static int at_test(tuple_type&,boost::mpl::int_<TUPLE_SIZE>)
+	{
+	  #ifdef TRACE_BENCHMARK
+	    std::cout<<"at_test:TUPLE_SIZE="<<TUPLE_SIZE<<"\n";
+	  #endif
+	    return 0;
+	}
+ public:
+	static int exec()
+	{
+	      #ifdef TRACE_BENCHMARK
+		std::cout<<"test_row<I="<<I<<",J="<<J<<">:\n";
+                #ifdef USE_DEMANGLER
+		  std::cout<<"tuple_type="<<utility::demangled_type_name<tuple_type>()<<"\n";
+                #endif
+	      #endif
+		tuple_type t;
+		int const value=at_test(t,boost::mpl::int_<0>());
+		//The combination of the above at_test specialized function
+		//and the at_test general function means the above call
+		//actually calls:
+		//  at_test'<K>
+		//for k=0...J%TUPLE_SIZE-1
+		//where at_test' is just at_test without the
+		//recursive call to at_test<K+1>(...).
+		return value+test_row<I,J+1>::exec();
+	}
+};
+template<int I>
+struct test_row<I,LAST_ROW>
+{
+	static int exec()
+	{
+	    return 0;
+	}
+};
+
+//The combination of the above test_row special and the preceding general
+//templates means the call:
+//  test_row<I>::exec()
+//executes:
+//  test_row<I,J>::exec'()
+//for J=0...LAST_ROW
+//where exec' is exec without the recursive call to test_row<I,J+1>::exec().
+
+template<int I=0>
+struct test_col
+{
+	static int exec()
+	{
+		int const value=test_row<I>::exec();
+		return value+test_col<I+1>::exec();
+	}
+};
+
+template<>
+struct test_col<LAST_COL>
+{
+	static int exec()
+	{
+	    return 0;
+	}
+};
+
+int main()
+{
+	std::cout<<"TUPLE_SIZE="<<TUPLE_SIZE<<"\n";
+	std::cout<<"LAST_ROW="<<LAST_ROW<<"\n";
+	int const value=test_col<>::exec();
+	//The combination of the test_col general and special templates
+	//means the above call executes:
+	//  test_row<I>::exec()
+	//for I=0...LAST_COL
+	std::cout<<"value="<<value<<"\n";
+	return value==0;
+}
Added: sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.clangxx.txt
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.clangxx.txt	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,38 @@
+COMPILER_VERSION:clangxx
+VALU_AT:-DVALU_AT
+TUPLE_TEST_IMPL:0
+TUPLE_SIZE:16
+LAST_LESS:4
+user:19.56
+system:0.29
+elapsed:20.19
+LAST_LESS:8
+user:37.36
+system:0.64
+elapsed:37.99
+LAST_LESS:12
+user:67.29
+system:0.63
+elapsed:67.90
+LAST_LESS:16
+user:109.71
+system:1.35
+elapsed:111.07
+TUPLE_TEST_IMPL:1
+TUPLE_SIZE:16
+LAST_LESS:4
+user:19.84
+system:0.21
+elapsed:20.03
+LAST_LESS:8
+user:37.53
+system:0.39
+elapsed:37.90
+LAST_LESS:12
+user:67.42
+system:0.95
+elapsed:68.36
+LAST_LESS:16
+user:109.79
+system:0.82
+elapsed:110.60
Added: sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.gcc4_8n.txt
==============================================================================
--- (empty file)
+++ sandbox/variadic_templates/sandbox/slim/test/tuple.benchmark.time.gcc4_8n.txt	2012-09-21 09:26:32 EDT (Fri, 21 Sep 2012)
@@ -0,0 +1,38 @@
+COMPILER_VERSION:gcc4_8n
+VALU_AT:-DVALU_AT
+TUPLE_TEST_IMPL:0
+TUPLE_SIZE:16
+LAST_LESS:4
+user:5.01
+system:0.30
+elapsed:5.30
+LAST_LESS:8
+user:18.52
+system:0.77
+elapsed:19.30
+LAST_LESS:12
+user:73.32
+system:1.31
+elapsed:74.63
+LAST_LESS:16
+user:293.12
+system:3.09
+elapsed:296.24
+TUPLE_TEST_IMPL:1
+TUPLE_SIZE:16
+LAST_LESS:4
+user:4.50
+system:0.33
+elapsed:4.81
+LAST_LESS:8
+user:12.78
+system:0.59
+elapsed:13.35
+LAST_LESS:12
+user:32.84
+system:1.13
+elapsed:33.96
+LAST_LESS:16
+user:70.90
+system:1.86
+elapsed:72.75