$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54474 - sandbox/monotonic/boost/heterogenous
From: christian.schladetsch_at_[hidden]
Date: 2009-06-28 17:32:58
Author: cschladetsch
Date: 2009-06-28 17:32:57 EDT (Sun, 28 Jun 2009)
New Revision: 54474
URL: http://svn.boost.org/trac/boost/changeset/54474
Log:
comment changes
Text files modified: 
   sandbox/monotonic/boost/heterogenous/vector.hpp |    59 +++++++++++++++++++++++---------------- 
   1 files changed, 34 insertions(+), 25 deletions(-)
Modified: sandbox/monotonic/boost/heterogenous/vector.hpp
==============================================================================
--- sandbox/monotonic/boost/heterogenous/vector.hpp	(original)
+++ sandbox/monotonic/boost/heterogenous/vector.hpp	2009-06-28 17:32:57 EDT (Sun, 28 Jun 2009)
@@ -48,10 +48,40 @@
                         vector(size_t reserved);
                         */
 
+			template <class Ty, class Fun>
+			Fun foreach(Fun fun)
+			{
+				BOOST_FOREACH(common_base &b, *this)
+				{
+					if (Ty *ptr = dynamic_cast<Ty *>(&b))
+					{
+						fun(*ptr);
+					}
+				}
+				return fun;
+			}
+
+			template <class Ty, class Fun>
+			Fun foreach(Fun fun) const
+			{
+				BOOST_FOREACH(const common_base &base, *this)
+				{
+					if (Ty *ptr = dynamic_cast<Ty *>(&base))
+					{
+						fun(*ptr);
+					}
+				}
+				return fun;
+			}
+
                         size_t size() const
                         {
                                 return impl.size();
                         }
+			bool empty() const
+			{
+				return impl.empty();
+			}
 
                         iterator begin()
                         {
@@ -103,11 +133,13 @@
                         {
                                 return impl[n];
                         }
+
                         template <class Other>
                         bool is_type_at(size_t n) const
                         {
                                 return ptr_at<Other>(n) != 0;
                         }
+			
                         template <class Other>
                         Other &ref_at(size_t n)
                         {
@@ -124,6 +156,7 @@
                                         throw std::bad_cast();
                                 return *ptr;
                         }
+
                         template <class Other>
                         Other *ptr_at(size_t n)
                         {
@@ -135,6 +168,7 @@
                                 return dynamic_cast<const Other *>(&at(n));
                         }
 
+			// TODO: use variadic arguments or BOOST_PP to pass ctor args
                         template <class U>
                         void push_back()
                         {
@@ -168,31 +202,6 @@
                                 return impl.get_allocator();
                         }
 
-			template <class Ty, class Fun>
-			Fun foreach(Fun fun)
-			{
-				BOOST_FOREACH(common_base &b, *this)
-				{
-					if (Ty *ptr = dynamic_cast<Ty *>(&b))
-					{
-						fun(*ptr);
-					}
-				}
-				return fun;
-			}
-
-			template <class Ty, class Fun>
-			Fun foreach(Fun fun) const
-			{
-				BOOST_FOREACH(const common_base &base, *this)
-				{
-					if (Ty *ptr = dynamic_cast<Ty *>(&base))
-					{
-						fun(*ptr);
-					}
-				}
-				return fun;
-			}
                 private:
                         template <class U>
                         U *allocate_type()