stdcxx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vi...@apache.org
Subject svn commit: r681820 [4/7] - in /stdcxx/trunk: ./ doc/ etc/config/src/ examples/include/ include/ include/loc/ include/rw/ src/ tests/containers/ tests/diagnostics/ tests/include/ tests/intro/ tests/localization/ tests/regress/ tests/src/ tests/strings/...
Date Fri, 01 Aug 2008 20:51:22 GMT
Modified: stdcxx/trunk/include/rw/_meta_sign.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_meta_sign.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_meta_sign.h (original)
+++ stdcxx/trunk/include/rw/_meta_sign.h Fri Aug  1 13:51:17 2008
@@ -38,10 +38,8 @@
 
 _RWSTD_NAMESPACE (__rw) {
 
-/**
- * Provides typedefs mapping non-boolean integral types to signed
- * and unsigned integral types of the same base type.
- */
+// Provides typedefs mapping non-boolean integral types to signed
+// and unsigned integral types of the same base type.
 template <class _TypeT>
 struct __rw_sign_helper
 {
@@ -71,7 +69,7 @@
 
 #  if (_RWSTD_WCHAR_SIZE == _RWSTD_CHAR_SIZE)
     typedef unsigned char _C_Uint;
-#  elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHORT_SIZE)
+#  elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHRT_SIZE)
     typedef unsigned short _C_Uint;
 #  elif (_RWSTD_WCHAR_SIZE == _RWSTD_INT_SIZE)
     typedef unsigned int _C_Uint;
@@ -85,7 +83,7 @@
 
 #  if (_RWSTD_WCHAR_SIZE == _RWSTD_CHAR_SIZE)
     typedef signed char _C_Sint;
-#  elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHORT_SIZE)
+#  elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHRT_SIZE)
     typedef signed short _C_Sint;
 #  elif (_RWSTD_WCHAR_SIZE == _RWSTD_INT_SIZE)
     typedef signed int _C_Sint;
@@ -177,10 +175,8 @@
 #endif // !_RWSTD_NO_LONG_LONG
 
 
-/**
- * Class template provides typedefs mapping enumeration types to integral
- * types of the same size.
- */
+// Class template provides typedefs mapping enumeration types
+// to integral types of the same size.
 template <_RWSTD_SIZE_T _Size>
 struct __rw_enum_helper
 {
@@ -233,18 +229,6 @@
 #  endif // _RWSTD_LONG_SIZE != _RWSTD_LLONG_SIZE
 #endif // !_RWSTD_NO_LONG_LONG
 
-/**
- * If _TypeT names a (possibly cv-qualified) signed integral type then the
- * member typedef type shall name the type _TypeT. Otherwise, if _TypeT
- * names a (possibly cv-qualified) unsigned integral type, then type shall
- * name the corresponding signed integral type with the same cv-qualifiers
- * as _TypeT. Otherwise, _TypeT shall name the signed integral type with
- * the smallest rank for which sizeof(_TypeT) == sizeof(_C_type), with the
- * same cv-qualifiers as _TypeT.
- *
- * note requires _TypeT shall be a (possibly cv-qualified) integral or
- * enum type, but not a bool type.
- */
 template <class _TypeT>
 struct __rw_make_signed
 {
@@ -276,20 +260,8 @@
     typedef _TypeU type;
 };
 
-//#define _RWSTD_MAKE_SIGNED(T) typename _RW::__rw_make_signed<T>::type
+#define _RWSTD_MAKE_SIGNED(T) _RW::__rw_make_signed<T>::type
 
-/**
- * If _TypeT names a (possibly cv-qualified) unsigned integral type then the
- * member typedef type shall name the type _TypeT. Otherwise, if _TypeT
- * names a (possibly cv-qualified) ununsigned integral type, then type shall
- * name the corresponding unsigned integral type with the same cv-qualifiers
- * as _TypeT. Otherwise, _TypeT shall name the unsigned integral type with
- * the smallest rank for which sizeof(_TypeT) == sizeof(_C_type), with the
- * same cv-qualifiers as _TypeT.
- *
- * note requires _TypeT shall be a (possibly cv-qualified) integral or
- * enum type, but not a bool type.
- */
 template <class _TypeT>
 struct __rw_make_unsigned
 {
@@ -321,7 +293,7 @@
     typedef _TypeU type;
 };
 
-//#define _RWSTD_MAKE_UNSIGNED(T) typename _RW::__rw_make_unsigned<T>::type
+#define _RWSTD_MAKE_UNSIGNED(T) _RW::__rw_make_unsigned<T>::type
 
 } // namespace __rw
 

Modified: stdcxx/trunk/include/rw/_rawiter.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_rawiter.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_rawiter.h (original)
+++ stdcxx/trunk/include/rw/_rawiter.h Fri Aug  1 13:51:17 2008
@@ -71,7 +71,7 @@
     typedef _OutputIterator iterator_type;
 
     // 20.4.2, p2
-    _EXPLICIT raw_storage_iterator (iterator_type __x): _C_iter (__x) { }
+    explicit raw_storage_iterator (iterator_type __x): _C_iter (__x) { }
 
     // 20.4.2, p3
     raw_storage_iterator& operator* () {

Modified: stdcxx/trunk/include/rw/_ref_wrap.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_ref_wrap.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_ref_wrap.h (original)
+++ stdcxx/trunk/include/rw/_ref_wrap.h Fri Aug  1 13:51:17 2008
@@ -1,10 +1,12 @@
 // -*- C++ -*-
 /***************************************************************************
  *
+ * _ref_wrap.h - reference wrappers for <functional> header
+ *
  * This is an internal header file used to implement the C++ Standard
  * Library. It should never be #included directly by a program.
  *
- * $Id$
+ * $Id: _ref_wrap.h 673534 2008-07-02 22:49:15Z elemings $
  *
  ***************************************************************************
  *
@@ -24,8 +26,8 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 2008 Rogue Wave Software.
- * 
+ * Copyright 2008 Rogue Wave Software, Inc.
+ *
  **************************************************************************/
 
 #ifndef _RWSTD_RW_REF_WRAP_INCLUDED
@@ -33,31 +35,76 @@
 
 #  include <rw/_defs.h>
 
-#  if !defined _RWSTD_NO_EXT_CXX_0X
-
 
-_RWSTD_NAMESPACE (__rw) {
+_RWSTD_NAMESPACE (std) {
 
 
-/**
- * @class std::reference_wrapper
- *
- * Encapsulates a reference as an object.  This class template allows
- * references to be manipulated and behave as an ordinary object.
- *
- * @tparam Type A non-reference type.
- */
+// 20.5.5, class template reference_wrapper:
 
-template <class _Type>
-class __rw_ref_wrap
+template <class _TypeT>
+class reference_wrapper
 {
+    _TypeT* _C_ptr;
+
+public:
+
+    typedef _TypeT  type;
+
+    reference_wrapper (type& __x)
+        : _C_ptr (&__x) { /* empty */ }
+
+    reference_wrapper (const reference_wrapper& __x)
+        : _C_ptr (__x._C_ptr) { /* empty */ }
+
+    reference_wrapper& operator= (const reference_wrapper& __x) {
+        _RWSTD_ASSERT (0 != __x._C_ptr);
+        _C_ptr = __x._C_ptr;
+        return *this;
+    }
 
+    operator type& () const {
+        _RWSTD_ASSERT (0 != _C_ptr);
+        return *_C_ptr;
+    }
+
+    type& get() const {
+        _RWSTD_ASSERT (0 != _C_ptr);
+        return *_C_ptr;
+    }
 };
 
 
-}   // namespace __rw
+template <class _TypeT>
+inline reference_wrapper<_TypeT>
+ref (_TypeT& __x)
+{
+    return reference_wrapper<_TypeT> (__x);
+}
+
+template <class _TypeT>
+inline reference_wrapper<_TypeT>
+ref (reference_wrapper<_TypeT>& __x)
+{
+    return reference_wrapper<_TypeT> (__x);
+}
+
+
+template <class _TypeT>
+inline reference_wrapper<const _TypeT>
+cref (const _TypeT& __x)
+{
+    return reference_wrapper<const _TypeT> (__x);
+}
+
+template <class _TypeT>
+inline reference_wrapper<const _TypeT>
+cref (reference_wrapper<const _TypeT>& __x)
+{
+    return reference_wrapper<const _TypeT> (__x);
+}
+
 
+}   // namespace std
 
-#  endif   // !defined _RWSTD_NO_EXT_CXX_0X
 
 #endif   // _RWSTD_RW_REF_WRAP_INCLUDED

Modified: stdcxx/trunk/include/rw/_select.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_select.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_select.h (original)
+++ stdcxx/trunk/include/rw/_select.h Fri Aug  1 13:51:17 2008
@@ -25,7 +25,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 1994-2005 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -89,7 +89,7 @@
 
 #if !defined (__SUNPRO_CC) || __SUNPRO_CC > 0x530
 #  define _RWSTD_DISPATCH(iter)   \
-       (_TYPENAME _RW::__rw_select_int< iter >::_SelectT (1))
+       (typename _RW::__rw_select_int< iter >::_SelectT (1))
 
 #else
    // working around a SunPro 5.3 a prior bug (PR #28739)
@@ -100,14 +100,14 @@
 #ifndef _RWSTD_NO_CLASS_PARTIAL_SPEC
 
 template <class _TypeT, class _TypeU>
-struct __rw_is_same
+struct __rw_same_type
 {
     typedef __rw_false_t _C_type;
     enum { _C_val };
 };
 
 template <class _TypeT>
-struct __rw_is_same<_TypeT, _TypeT>
+struct __rw_same_type<_TypeT, _TypeT>
 {
     typedef __rw_true_t _C_type;
     enum { _C_val = 1 };
@@ -128,7 +128,7 @@
 };
 
 template <class _TypeT, class _TypeU>
-struct __rw_is_same
+struct __rw_same_type
 {
     struct _C_yes {};
     struct _C_no { _C_yes no_ [2]; };
@@ -141,7 +141,7 @@
     enum { _C_val = sizeof (test (_C_Type<_TypeT> (),
                                   _C_Type<_TypeU> ())) == sizeof (_C_yes) };
 
-    typedef _TYPENAME __rw_bool_t<_C_val>::_C_type _C_type;
+    typedef typename __rw_bool_t<_C_val>::_C_type _C_type;
 };
 
 #endif   // _RWSTD_NO_CLASS_PARTIAL_SPEC

Modified: stdcxx/trunk/include/rw/_smartptr.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_smartptr.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_smartptr.h (original)
+++ stdcxx/trunk/include/rw/_smartptr.h Fri Aug  1 13:51:17 2008
@@ -177,7 +177,7 @@
     _TypeT  *_C_ptr;
 
     template <class _TypeU>
-    _EXPLICIT
+    explicit
     shared_ptr (const shared_ptr<_TypeU> &__rhs, const _TypeT*)
         : _C_pbody (__rhs._C_pbody) {
         if (_C_pbody)
@@ -193,7 +193,7 @@
     shared_ptr (): _C_pbody (0), _C_ptr (0) { }
 
     template <class _TypeU>
-    _EXPLICIT
+    explicit
     shared_ptr (_TypeU *__ptr)
         : _C_pbody (__ptr ? new _RW::__rw_ptr_body<_TypeU>(__ptr) : 0),
           _C_ptr (__ptr) { /* empty */ }
@@ -217,7 +217,7 @@
     }
 
     template <class _TypeU>
-    _EXPLICIT
+    explicit
     shared_ptr (const weak_ptr<_TypeU> &__rhs)
         : _C_pbody (__rhs._C_pbody), _C_ptr (__rhs._C_ptr) {
         if (_C_pbody) {
@@ -228,7 +228,7 @@
     }
 
     template <class _TypeU>
-    _EXPLICIT
+    explicit
     shared_ptr (auto_ptr<_TypeU>&);
 
     // [util.smartptr.shared.dest] destructor
@@ -312,7 +312,7 @@
         return _C_ptr;
     }
 
-    _TYPENAME _RW::__rw_nonvoid_ref<element_type>::_C_ref
+    typename _RW::__rw_nonvoid_ref<element_type>::_C_ref
     operator*() const {
         _RWSTD_ASSERT (0 != get ());
         return *get ();

Modified: stdcxx/trunk/include/rw/_specialized.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_specialized.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_specialized.h (original)
+++ stdcxx/trunk/include/rw/_specialized.h Fri Aug  1 13:51:17 2008
@@ -56,7 +56,7 @@
 
 
 #ifndef _RWSTD_NO_NONDEDUCED_CONTEXT
-#  define _RWSTD_CONTAINER_SIZE_TYPE _TYPENAME _Container::size_type
+#  define _RWSTD_CONTAINER_SIZE_TYPE typename _Container::size_type
 #else
 #  define _RWSTD_CONTAINER_SIZE_TYPE _RWSTD_SIZE_T
 #endif   // _RWSTD_NO_NONDEDUCED_CONTEXT

Modified: stdcxx/trunk/include/rw/_streamiter.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_streamiter.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_streamiter.h (original)
+++ stdcxx/trunk/include/rw/_streamiter.h Fri Aug  1 13:51:17 2008
@@ -79,7 +79,7 @@
     typedef basic_istream<char_type, traits_type> istream_type;
 
     // for convenience
-    typedef _TYPENAME _C_base::value_type         value_type;
+    typedef typename _C_base::value_type         value_type;
 
     // 24.5.1.1, p1
     istream_iterator (): _C_strm (0) { }

Modified: stdcxx/trunk/include/rw/_stringio.cc
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_stringio.cc?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_stringio.cc (original)
+++ stdcxx/trunk/include/rw/_stringio.cc Fri Aug  1 13:51:17 2008
@@ -38,7 +38,7 @@
 {
     _RWSTD_ASSERT (0 != __is.rdbuf ());
 
-    const _TYPENAME basic_istream<_CharT, _Traits>::sentry
+    const typename basic_istream<_CharT, _Traits>::sentry
         __ipfx (__is /* , noskipws = false */);
 
     ios_base::iostate __err = ios_base::goodbit;
@@ -82,7 +82,7 @@
                     const _CharT* __pdel = __gptr;
                     for (/**/; __pdel != __egptr; ++__pdel) {
 
-                        const _TYPENAME _Traits::int_type
+                        const typename _Traits::int_type
                             __c = _Traits::to_int_type(*__pdel);
 
                         if (_Traits::eq_int_type (__c, _Traits::eof ())) {
@@ -134,7 +134,7 @@
 
                     // n data in buffer, trigger underflow()
                     // note that streambuf may be unbuffered
-                    const _TYPENAME _Traits::int_type
+                    const typename _Traits::int_type
                         __c = __rdbuf->sgetc ();
 
                     if (_Traits::eq_int_type (__c, _Traits::eof ())) {
@@ -143,7 +143,7 @@
                     }
 
                     // convert to char_type so that isspace works correctly
-                    const _TYPENAME _Traits::char_type
+                    const typename _Traits::char_type
                         __ch = _Traits::to_char_type (__c);
 
                     if (__ctp.is (__ctp.space, __ch))
@@ -166,7 +166,7 @@
 
             for ( ; __n != 0; ) {
 
-                const _TYPENAME _Traits::int_type
+                const typename _Traits::int_type
                     __c (__rdbuf->sgetc ());
 
                 if (_Traits::eq_int_type (__c, _Traits::eof ())) {
@@ -175,7 +175,7 @@
                 }
 
                 // convert to char_type so that isspace works correctly
-                const _TYPENAME _Traits::char_type
+                const typename _Traits::char_type
                     __ch = _Traits::to_char_type (__c);
 
                 if (__ctp.is (__ctp.space, __ch))
@@ -221,7 +221,7 @@
 {
     _RWSTD_ASSERT (0 != __is.rdbuf ());
 
-    const _TYPENAME basic_istream<_CharT, _Traits>::sentry
+    const typename basic_istream<_CharT, _Traits>::sentry
         __ipfx (__is, true /* noskipws */);
 
 #ifndef _RWSTD_NO_FRIEND_TEMPLATE
@@ -247,7 +247,7 @@
 
             for ( ; ; ) {
 
-                typedef _TYPENAME _Traits::int_type int_type;
+                typedef typename _Traits::int_type int_type;
 
                 const _CharT* const __gptr  = __rdbuf->gptr ();
                 const _CharT* const __egptr = __rdbuf->egptr ();
@@ -350,12 +350,12 @@
             // FIXME: code commented out to work around an HP aCC 3.14.10
             // bug #JAGac86264
 
-            // typedef _TYPENAME
+            // typedef typename
             //     basic_string<_CharT, _Traits, _Allocator>::size_type
 
             for ( ; ; ) {
 
-                const _TYPENAME _Traits::int_type
+                const typename _Traits::int_type
                     __c (__is.rdbuf ()->sgetc ());
 
                 if (_Traits::eq_int_type (__c, _Traits::eof ())) {

Modified: stdcxx/trunk/include/rw/_strref.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_strref.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_strref.h (original)
+++ stdcxx/trunk/include/rw/_strref.h Fri Aug  1 13:51:17 2008
@@ -105,7 +105,7 @@
 {
     typedef _CharT                                            char_type;
     typedef _Allocator                                        allocator_type;
-    typedef _TYPENAME allocator_type::size_type               size_type;
+    typedef typename allocator_type::size_type               size_type;
     typedef _STD::basic_string<_CharT, _Traits, _Allocator>   string_type;
 
 #if     defined (_RWSTD_REENTRANT)              \

Modified: stdcxx/trunk/include/rw/_tree.cc
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_tree.cc?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_tree.cc (original)
+++ stdcxx/trunk/include/rw/_tree.cc Fri Aug  1 13:51:17 2008
@@ -169,7 +169,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 _C_insert (_C_link_t __x, _C_link_t __y, const value_type &__v)
 {
@@ -177,8 +177,8 @@
     ++_C_size;
 
     // for notational convenience
-    const _TYPENAME _C_node_t::_C_color_t _Red   = _C_node_t::_C_red;
-    const _TYPENAME _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
+    const typename _C_node_t::_C_color_t _Red   = _C_node_t::_C_red;
+    const typename _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
     const _C_link_t                       _Null  = _C_link_t ();
 
     if (   __y == _C_end || _Null != __x
@@ -328,7 +328,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 insert (iterator __it, const value_type &__v, bool __dup)
 {
@@ -399,7 +399,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::erase (iterator __it)
 {
     _RWSTD_ASSERT_RANGE (begin (), __it);
@@ -422,8 +422,8 @@
         return end ();
 
     // for notational convenience
-    const _TYPENAME _C_node_t::_C_color_t _Red   = _C_node_t::_C_red;
-    const _TYPENAME _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
+    const typename _C_node_t::_C_color_t _Red   = _C_node_t::_C_red;
+    const typename _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
     const _C_link_t                       _Null  = _C_link_t ();
 
     // returned iterator pointing to the element just past `it'
@@ -762,7 +762,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 erase (const key_type &__x)
 {
@@ -777,7 +777,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::_C_link_t 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::_C_link_t 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 _C_copy (_C_link_t __x, _C_link_t __p)
 {
@@ -818,7 +818,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 erase (iterator __first, iterator __last)
 {
@@ -851,7 +851,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 find (const key_type &__k)
 {
@@ -863,7 +863,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 lower_bound (const key_type &__k)
 {
@@ -884,7 +884,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 upper_bound (const key_type &__k)
 {
@@ -904,12 +904,12 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 _C_depth (const_iterator __it, size_type *__rank /* = 0 */) const
 {
     // for notational convenience
-    const _TYPENAME _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
+    const typename _C_node_t::_C_color_t _Black = _C_node_t::_C_black;
     const _C_link_t                       _Null  = _C_link_t ();
 
     const _C_link_t __node = _ITER_NODE (__it);
@@ -919,7 +919,7 @@
 
 #ifdef _RWSTDDEBUG
 
-    const _TYPENAME _C_node_t::_C_color_t _Red = _C_node_t::_C_red;
+    const typename _C_node_t::_C_color_t _Red = _C_node_t::_C_red;
 
     if (_Red == __node->_C_color) {
 
@@ -975,7 +975,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-_TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type
+typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 _C_level (const_iterator __it) const
 {

Modified: stdcxx/trunk/include/rw/_tree.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_tree.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_tree.h (original)
+++ stdcxx/trunk/include/rw/_tree.h Fri Aug  1 13:51:17 2008
@@ -87,8 +87,8 @@
     typedef _RWSTD_REBIND (allocator_type, __rw_rb_tree_node) _C_node_alloc_t;
     typedef _RWSTD_REBIND (allocator_type, _Key)              _C_key_alloc_t;
 
-    typedef _TYPENAME _C_node_alloc_t::pointer             _C_link_t;
-    typedef _TYPENAME _C_key_alloc_t::const_reference      _C_const_key_ref;
+    typedef typename _C_node_alloc_t::pointer             _C_link_t;
+    typedef typename _C_key_alloc_t::const_reference      _C_const_key_ref;
 
     _C_color_t _C_color; 
     _C_link_t  _C_parent;
@@ -128,14 +128,14 @@
                            _TypeT, _DiffT, _Pointer, _Reference> _C_iter_base;
 public:
 
-    typedef _TYPENAME _C_iter_base::value_type        value_type;
-    typedef _TYPENAME _C_iter_base::difference_type   difference_type;
-    typedef _TYPENAME _C_iter_base::pointer           pointer;
-    typedef _TYPENAME _C_iter_base::reference         reference;
-    typedef _TYPENAME _C_iter_base::iterator_category iterator_category;
+    typedef typename _C_iter_base::value_type        value_type;
+    typedef typename _C_iter_base::difference_type   difference_type;
+    typedef typename _C_iter_base::pointer           pointer;
+    typedef typename _C_iter_base::reference         reference;
+    typedef typename _C_iter_base::iterator_category iterator_category;
     typedef _Node                                     _C_node_t;
-    typedef _TYPENAME _C_node_t::allocator_type       allocator_type;
-    typedef _TYPENAME _C_node_t::_C_link_t            _C_link_t;
+    typedef typename _C_node_t::allocator_type       allocator_type;
+    typedef typename _C_node_t::_C_link_t            _C_link_t;
 
     typedef const value_type*                         const_pointer; 
     typedef const value_type&                         const_reference; 
@@ -263,7 +263,7 @@
     typedef _RWSTD_ALLOC_TYPE (_Alloc,_Val)            _C_val_alloc_t;
     typedef _RWSTD_REBIND (_Alloc, _Key)               _C_key_alloc_t;
     typedef _RWSTD_REBIND (_Alloc, _C_node_t)          _C_node_alloc_t;
-    typedef _TYPENAME _C_node_alloc_t::pointer         _C_link_t;
+    typedef typename _C_node_alloc_t::pointer         _C_link_t;
 
 public:
     
@@ -272,12 +272,12 @@
     typedef _Comp                                      key_compare;
     typedef _Alloc                                     allocator_type;
       
-    typedef _TYPENAME _C_val_alloc_t::pointer          pointer;
-    typedef _TYPENAME _C_val_alloc_t::const_pointer    const_pointer;
-    typedef _TYPENAME allocator_type::size_type        size_type;
-    typedef _TYPENAME allocator_type::difference_type  difference_type;
-    typedef _TYPENAME _C_val_alloc_t::reference        reference;
-    typedef _TYPENAME _C_val_alloc_t::const_reference  const_reference;
+    typedef typename _C_val_alloc_t::pointer          pointer;
+    typedef typename _C_val_alloc_t::const_pointer    const_pointer;
+    typedef typename allocator_type::size_type        size_type;
+    typedef typename allocator_type::difference_type  difference_type;
+    typedef typename _C_val_alloc_t::reference        reference;
+    typedef typename _C_val_alloc_t::const_reference  const_reference;
     
 private:
 
@@ -333,15 +333,15 @@
 
     struct _C_node_buf {
         typedef _RWSTD_REBIND (allocator_type, _C_node_buf) _C_buf_alloc_t;
-        typedef _TYPENAME _C_buf_alloc_t::pointer           _C_buf_ptr_t;
+        typedef typename _C_buf_alloc_t::pointer           _C_buf_ptr_t;
         
         _C_buf_ptr_t _C_next_buffer;
         size_type    size;
         _C_link_t    _C_buffer;
     };
 
-    typedef _TYPENAME _C_node_buf::_C_buf_alloc_t _C_buf_alloc_t;
-    typedef _TYPENAME _C_node_buf::_C_buf_ptr_t   _C_buf_ptr_t;
+    typedef typename _C_node_buf::_C_buf_alloc_t _C_buf_alloc_t;
+    typedef typename _C_node_buf::_C_buf_ptr_t   _C_buf_ptr_t;
 
     _C_buf_ptr_t _C_buf_list;
     _C_link_t    _C_free_list;
@@ -819,7 +819,7 @@
 
 
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
-inline _TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type 
+inline typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::size_type 
 __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::
 count (const _Key& __k) const
 {
@@ -830,7 +830,7 @@
 
 
 #define _RWSTD_RB_TREE_ITER \
-        _TYPENAME __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator
+        typename __rb_tree<_Key, _Val, _KeyOf, _Comp, _Alloc>::iterator
                                                
 template <class _Key, class _Val, class _KeyOf, class _Comp, class _Alloc>
 inline _STD::pair<_RWSTD_RB_TREE_ITER , _RWSTD_RB_TREE_ITER >

Modified: stdcxx/trunk/include/rw/_tuple.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_tuple.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_tuple.h (original)
+++ stdcxx/trunk/include/rw/_tuple.h Fri Aug  1 13:51:17 2008
@@ -1,12 +1,12 @@
 // -*- C++ -*-
 /***************************************************************************
  *
- * _tuple.h - tuple class template and specializations
+ * _tuple.h - internal class template and helpers for <tuple> header
  *
  * This is an internal header file used to implement the C++ Standard
  * Library. It should never be #included directly by a program.
  *
- * $Id$
+ * $Id: _tuple.h 677985 2008-07-18 18:05:55Z elemings $
  *
  ***************************************************************************
  *
@@ -26,7 +26,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 2008 Rogue Wave Software.
+ * Copyright 2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -35,325 +35,209 @@
 
 #  include <rw/_defs.h>
 
-#  if !defined _RWSTD_NO_EXT_CXX_0X
+#  include <rw/_allocator.h>        // for std::allocator_arg_t
+#  include <rw/_forward.h>          // for _RWSTD_FORWARD, _RWSTD_MOVE
+#  include <rw/_meta_other.h>       // for _RWSTD_DECAY
 
-#    include <rw/_allocator.h>      // for std::allocator_arg_t
-#    include <rw/_forward.h>        // for std::forward, _RWSTD_MOVE
-#    include <rw/_pair.h>           // for std::pair
 
+_RWSTD_NAMESPACE (std) {
 
-#    if !defined _RWSTD_NO_VARIADIC_TEMPLATES
+template <class _TypeT>
+class reference_wrapper;
 
-_RWSTD_NAMESPACE (std) {
+}   // namespace std
 
 
-// 20.3.1, class template tuple:
+_RWSTD_NAMESPACE (__rw) {
+
+
+// internal tuple class template
+
+#  if !defined _RWSTD_NO_VARIADIC_TEMPLATES
+
+template <class... _TypesT>
+class __rw_tuple;
 
-/**
- * A fixed-size collection of values with variable, heterogenous types.
- * This class template is used to instantatiate tuple types.  A tuple
- * type specifies zero or more element types for defining tuple values.
- * A tuple value can be constructed from a tuple type that holds one
- * value for each element type in the tuple.
- *
- * By definition, a homogenous tuple is a tuple that has the exact same
- * number and type of elements as another tuple type.  A heterogenous
- * tuple is just the opposite: a tuple type that has either a different
- * number of element types or one or more different element types.
- *
- * @tparam Types A list of zero or more types.  No applicable type
- *               requirements or restrictions.
- */
-template < class... Types >
-class tuple;
-
-/**
- * @internal
- * The template specialization for empty tuples.  This specialization
- * also serves as the terminating instantiation of a recursive tuple
- * with one or more element types.
- */
 _RWSTD_SPECIALIZED_CLASS
-class tuple< >
+class __rw_tuple<>
 {
     // empty
 };
 
-/**
- * @internal
- * The basic template specialization for most tuples.  This class
- * template is used to instantiate all tuple types except for empty
- * tuples and tuples with exactly two element types.
- *
- * @tparam _HeadT First element type (required).
- * @tparam _TailT Zero or more additional element types.
- */
-template < class _HeadT, class... _TailT >
-class tuple< _HeadT, _TailT... >
-    : tuple< _TailT... >
+template <class _HeadT, class... _TailT>
+class __rw_tuple<_HeadT, _TailT...>
+    : public __rw_tuple<_TailT...>
 {
-    typedef tuple< _TailT... >  _Base;
-
-protected:
-
-    _HeadT        _C_head;
+    typedef __rw_tuple<_TailT...>   _Base;
 
-    _Base&        _C_tail ()       { return *this; }
-    const _Base&  _C_tail () const { return *this; }
+    _HeadT  _C_data;
 
 public:
 
-    _HeadT&       __get ()       { return _C_head; }
-    const _HeadT& __get () const { return _C_head; }
+    __rw_tuple ()
+        : _Base (), _C_data () { /* empty */ }
 
-    /**
-     * Construct tuple with default values.
-     */
-    tuple ()
-        : _Base (), _C_head () { /* empty */ }
-
-    /**
-     * Copy construct tuple from a different tuple value.
-     * @param __tuple Another tuple value with same type.
-     */
-    tuple (const tuple& __tuple)
+    __rw_tuple (const __rw_tuple& __tuple)
         : _Base (__tuple._C_tail ())
-        , _C_head (__tuple._C_head) { /* empty */ }
+        , _C_data (__tuple._C_data) { /* empty */ }
 
-    /**
-     * Copy assign tuple from a different tuple value.
-     * @param __tuple Some other tuple value.
-     * @param __tuple Another tuple value with same type.
-     * @return This tuple value.
-     */
-    tuple& operator= (const tuple& __tuple) {
+    __rw_tuple& operator= (const __rw_tuple& __tuple) {
         _Base::operator= (__tuple._C_tail ());
-        _C_head = __tuple._C_head;
+        _C_data = __tuple._C_data;
         return *this;
     }
 
-    /**
-     * Copy construct tuple from element values.  This explicit
-     * constructor creates a tuple value from element values.
-     *
-     * @param __head A value corresponding to first tuple element type.
-     * @param __tail List of corresponding values of remaining tuple
-     *               element types.
-     */
-    _EXPLICIT
-    tuple (const _HeadT& __head, const _TailT&... __tail)
-        : _Base (__tail...), _C_head (__head) { /* empty */ }
-
-#      if !defined _RWSTD_NO_RVALUE_REFERENCES
-
-    /**
-     * Construct tuple by moving a value from some other tuple value.
-     * This move constructor moves the value from the given tuple value
-     * into this tuple.
-     * @param __tuple Some other homogenous tuple value.
-     */
-    tuple (tuple&& __tuple)
-        : _Base (std::forward<_Base> (__tuple._C_tail ()))
-        , _C_head (_RWSTD_MOVE (__tuple._C_head)) { /* empty */ }
-
-    /**
-     * Assign tuple by moving a value from some other homogenous tuple.
-     * This assignment operator moves the value from the given tuple
-     * value into this tuple.
-     * @param __tuple Some other homogenous tuple value.
-     * @return Lvalue reference to this tuple value.
-     */
-    tuple& operator= (tuple&& __tuple) {
-        _Base::operator= (std::forward<_Base> (__tuple._C_tail ()));
-        _C_head = _RWSTD_MOVE (__tuple._C_head);
-        return *this;
-    }
-
-#      endif   // !defined _RWSTD_NO_RVALUE_REFERENCES
+    explicit
+    __rw_tuple (const _HeadT& __head, const _TailT&... __tail)
+        : _Base (__tail...), _C_data (__head) { /* empty */ }
 
-    /**
-     * Construct tuple by copying a heterogenous tuple value.  This copy
-     * constructor copies the value from a compatible, heterogenous
-     * tuple.
-     * @tparam _HeadU First element type in tuple.
-     * @tparam _TailU Remaining element types in tuple.
-     * @param __tuple A compatible, heterogenous tuple value.
-     */
     template <class _HeadU, class... _TailU>
-    tuple (const tuple<_HeadU, _TailU...>& __tuple)
+    __rw_tuple (const __rw_tuple<_HeadU, _TailU...>& __tuple)
         : _Base (__tuple._C_tail ())
-        , _C_head (__tuple._C_head) { /* empty */ }
+        , _C_data (__tuple._C_head ()) { /* empty */ }
 
-    /**
-     * Assign tuple by copying a heterogenous tuple value.  This
-     * assignment operator copies the value from a compatible,
-     * heterogenous tuple.
-     * @tparam _HeadU First element type in tuple.
-     * @tparam _TailU Remaining element types in tuple.
-     * @param __tuple A compatible, heterogenous tuple value.
-     * @return Lvalue reference to this tuple value.
-     */
     template <class _HeadU, class... _TailU>
-    tuple& operator= (const tuple<_HeadU, _TailU...>& __tuple) {
+    __rw_tuple& operator= (const __rw_tuple<_HeadU, _TailU...>& __tuple) {
         _Base::operator= (__tuple._C_tail ());
-        _C_head = __tuple._C_head;
+        _C_data = __tuple._C_head ();
         return *this;
     }
 
-#      if !defined _RWSTD_NO_RVALUE_REFERENCES
+#    if !defined _RWSTD_NO_RVALUE_REFERENCES
+
+    __rw_tuple (__rw_tuple&& __tuple)
+        : _Base (_STD::move<_Base&&> (__tuple._C_tail ()))
+        , _C_data (_RWSTD_FORWARD (_HeadT, __tuple._C_data)) { /* empty */ }
+
+    __rw_tuple& operator= (__rw_tuple&& __tuple) {
+        _Base::operator= (_RWSTD_FORWARD (_Base, __tuple._C_tail ()));
+        _C_data = _RWSTD_MOVE (__tuple._C_data);
+        return *this;
+    }
 
-    /**
-     * Construct tuple by moving element values.  This explicit move
-     * constructor moves values from the corresponding element types.
-     * @tparam _HeadU First element type in other tuple.
-     * @tparam _TailU Remaining element types in other tuple.
-     * @param __head First value in element type list.
-     * @param __tail Remaining values in element type list.
-     */
     template <class _HeadU, class... _TailU>
-    _EXPLICIT tuple (_HeadU&& __head, _TailU&&... __tail)
-        : _Base (std::forward<_TailU> (__tail)...)
-        , _C_head (_RWSTD_MOVE (__head)) { /* empty */ }
-
-    /**
-     * Construct tuple by moving a heterogenous tuple value.  This move
-     * constructor moves values from a heterogenous tuple into this
-     * tuple value.
-     * @tparam _HeadU First element type in other tuple.
-     * @tparam _TailU Remaining element types in other tuple.
-     * @param __tuple A compatible, heterogenous tuple value.
-     */
+    explicit __rw_tuple (_HeadU&& __head, _TailU&&... __tail)
+        : _Base (_RWSTD_FORWARD (_TailU, __tail)...)
+        , _C_data (_RWSTD_MOVE (__head)) { /* empty */ }
+
     template <class _HeadU, class... _TailU>
-    tuple (tuple<_HeadU, _TailU...>&& __tuple)
-        : _Base (std::forward<_Base> (__tuple._C_tail ()))
-        , _C_head (_RWSTD_MOVE (__tuple._C_head)) { /* empty */ }
-
-    /**
-     * Assign tuple by moving a value from some other heterogenous tuple.
-     * This move assignment operator assigns a value to this tuple by
-     * moving values from a compatible, heterogenous tuple.
-     * @tparam _HeadU First element type in other tuple.
-     * @tparam _TailU Remaining element types in other tuple.
-     * @param __tuple A compatible, heterogenous tuple value.
-     * @return Lvalue reference to this tuple.
-     */
+    __rw_tuple (__rw_tuple<_HeadU, _TailU...>&& __tuple)
+        : _Base (_RWSTD_MOVE (__tuple._C_tail ()))
+        , _C_data (_RWSTD_MOVE (__tuple._C_head ())) { /* empty */ }
+
     template <class _HeadU, class... _TailU>
-    tuple& operator= (tuple<_HeadU, _TailU...>&& __tuple) {
-        _Base::operator= (std::forward<_Base> (__tuple._C_tail ()));
-        _C_head = _RWSTD_MOVE (__tuple._C_head);
+    __rw_tuple& operator= (__rw_tuple<_HeadU, _TailU...>&& __tuple) {
+        _Base::operator= (_RWSTD_MOVE (__tuple._C_tail ()));
+        _C_data = _RWSTD_MOVE (__tuple._C_head ());
         return *this;
     }
 
     // allocator-extended constructors:
 
     template <class _Alloc, class... _TypesU>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           const _TypesU&&... __values);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
+                const _TypesU&&... __values);
 
     template <class _Alloc>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           tuple&& __tuple);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
+                __rw_tuple&& __tuple);
 
     template <class _Alloc, class... _TypesU>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           tuple<_TypesU...>&& __tuple);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
+                __rw_tuple<_TypesU...>&& __tuple);
 
-#      endif   // !defined _RWSTD_NO_RVALUE_REFERENCES
+#    endif   // !defined _RWSTD_NO_RVALUE_REFERENCES
 
     template <class _Alloc>
-    tuple (allocator_arg_t, const _Alloc& __alloc);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc);
 
     template <class _Alloc>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
            const _HeadT& __head, const _TailT&... __tail);
 
     template <class _Alloc>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           const tuple& __tuple);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
+                const __rw_tuple& __tuple);
 
     template <class _Alloc, class... _TypesU>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           const tuple<_TypesU...>& __tuple);
+    __rw_tuple (_STD::allocator_arg_t, const _Alloc& __alloc,
+                const __rw_tuple<_TypesU...>& __tuple);
 
-};
+    // accessors:
 
+    _HeadT&         _C_head ()       { return _C_data; }
+    const _HeadT&   _C_head () const { return _C_data; }
 
-/**
- * @internal
- * Template specialization for tuples with exactly two element types.
- * This specialization provides additional constructors and operators for
- * making class template \c std::pair implicitly compatible with tuples.
- * @tparam _TypeT1 First element type.
- * @tparam _TypeT2 Second element type.
- */
-template < class _TypeT1, class _TypeT2 >
-class tuple< _TypeT1, _TypeT2 >
-{
-    _TypeT1 _C_first;
-    _TypeT2 _C_second;
+    _Base&          _C_tail ()       { return *this; }
+    const _Base&    _C_tail () const { return *this; }
 
-public:
+};
 
-    tuple (): _C_first (), _C_second () { /* empty */ }
 
-    tuple (const tuple& __tuple)
-        : _C_first (__tuple._C_first)
-        , _C_second (__tuple._C_second) { /* empty */ }
-
-    tuple& operator= (const tuple& __tuple) {
-        _C_first = __tuple._C_first;
-        _C_second = __tuple._C_second;
-        return *this;
-    }
+struct __rw_ignore
+{
+    template <class _TypeT>
+    void operator= (const _TypeT&) const {}
+};
 
-    _EXPLICIT tuple (const _TypeT1& __t1, const _TypeT2& __t2)
-        : _C_first (__t1), _C_second (__t2) { /* empty */ }
 
-    template <class _TypeU1, class _TypeU2>
-    tuple (const pair<_TypeU1, _TypeU2>& __pair)
-        : _C_first (__pair.first), _C_second (__pair.second) { /* empty */ }
-
-    template <class _TypeU1, class _TypeU2>
-    tuple& operator= (const pair<_TypeU1, _TypeU2>& __pair) {
-        _C_first = __pair.first;
-        _C_second = __pair.second;
-        return *this;
-    }
+template <class _TypeT>
+struct __rw_deduce_ref
+{
+    typedef _TypeT  _C_type;
+};
 
-#      if !defined _RWSTD_NO_RVALUE_REFERENCES
+template <class _TypeT>
+struct __rw_deduce_ref<_STD::reference_wrapper<_TypeT> >
+{
+    typedef _TypeT& _C_type;
+};
 
-    template <class _TypeU1, class _TypeU2>
-    tuple (pair<_TypeU1, _TypeU2>&& __pair)
-        : _C_first (_RWSTD_MOVE (__pair.first))
-        , _C_second (_RWSTD_MOVE (__pair.second)) { /* empty */ }
-
-    template <class _TypeU1, class _TypeU2>
-    tuple& operator= (pair<_TypeU1, _TypeU2>&& __pair) {
-        _C_first = _RWSTD_MOVE (__pair.first);
-        _C_second = _RWSTD_MOVE (__pair.second);
-        return *this;
-    }
+template <class _TypeT>
+struct __rw_deduce_ref<const _STD::reference_wrapper<_TypeT> >
+{
+    typedef _TypeT& _C_type;
+};
 
-    // allocator-extended constructors:
+template <class _TypeT>
+struct __rw_make_tuple
+{
+    typedef typename _RWSTD_DECAY (_TypeT)                 _C_decay;
+    typedef typename __rw_deduce_ref<_C_decay>::_C_type    _C_type;
+};
 
-    template <class _Alloc, class _TypeU1, class _TypeU2>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           pair<_TypeU1, _TypeU2>&& __pair);
-
-#      endif   // !defined _RWSTD_NO_RVALUE_REFERENCES
-
-    template <class _Alloc, class _TypeU1, class _TypeU2>
-    tuple (allocator_arg_t, const _Alloc& __alloc,
-           const pair<_TypeU1, _TypeU2>& __pair);
 
-};
+template <class...  _TypesT, class... _TypesU>
+bool operator== (const __rw_tuple<_TypesT...>& __x,
+                 const __rw_tuple<_TypesU...>& __y) {
+    return     (__x._C_head () == __y._C_head ())
+            && (__x._C_tail () == __y._C_tail ());
+}
+
+_RWSTD_SPECIALIZED_FUNCTION
+bool operator== (const __rw_tuple<>& /*__x*/,
+                 const __rw_tuple<>& /*__y*/) {
+    return true;
+}
+
+template <class...  _TypesT, class... _TypesU>
+bool operator< (const __rw_tuple<_TypesT...>& __x,
+                const __rw_tuple<_TypesU...>& __y) {
+    return     (__x._C_head () < __y._C_head ())
+            || (  !(__y._C_head () < __x._C_head ())
+                && (__x._C_tail () < __y._C_tail ()));
+}
+
+_RWSTD_SPECIALIZED_FUNCTION
+bool operator< (const __rw_tuple<>& /*__x*/,
+                const __rw_tuple<>& /*__y*/) {
+    return false;
+}
 
+#  endif   // !defined _RWSTD_NO_VARIADIC_TEMPLATES
 
-}   // namespace std
 
-#    endif   // !defined _RWSTD_NO_VARIADIC_TEMPLATES
+}   // namespace __rw
 
-#  endif   // !defined _RWSTD_NO_EXT_CXX_0X
 
 #endif   // _RWSTD_TUPLE_INCLUDED
-

Modified: stdcxx/trunk/include/rw/_tuple_traits.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_tuple_traits.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_tuple_traits.h (original)
+++ stdcxx/trunk/include/rw/_tuple_traits.h Fri Aug  1 13:51:17 2008
@@ -38,9 +38,6 @@
 #    include <rw/_meta_help.h>  // for __rw_true_type
 
 
-/// @ingroup tuple
-/// @{
-
 _RWSTD_NAMESPACE (std) {
 
 
@@ -49,14 +46,6 @@
 template <class _Type, class _Alloc>
 struct uses_allocator;
 
-/**
- * Allows tuple construction with an allocator.  This trait informs
- * other library components that tuple can be constructed with an
- * allocator even though it does not have a nested allocator_type.
- *
- * @tparam _Types List of element types in tuple.
- * @tparam _Alloc Must conform to Allocator requirements (20.1.2).
- */
 template <class... _Types, class _Alloc> 
 struct uses_allocator<tuple<_Types...>, _Alloc>
     : _RW::__rw_true_type
@@ -68,13 +57,6 @@
 template <class _Type>
 struct constructible_with_allocator_prefix;
 
-/**
- * Allows tuple construction with an allocator prefix argument.  This
- * trait informs other library components that tuple can be constructed
- * with an allocator prefix argument.
- *
- * @tparam _Types List of element types in tuple.
- */
 template <class... _Types> 
 struct constructible_with_allocator_prefix<tuple<_Types...> > 
     : _RW::__rw_true_type
@@ -83,8 +65,6 @@
 }; 
 
 
-/// @}
-
 }   // namespace std
 
 

Modified: stdcxx/trunk/include/rw/_typetraits.h
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_typetraits.h?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_typetraits.h (original)
+++ stdcxx/trunk/include/rw/_typetraits.h Fri Aug  1 13:51:17 2008
@@ -236,7 +236,7 @@
 #else
 
     // prevent references from causing an error
-    typedef _TYPENAME __rw_is_reference<_TypeT>::_C_type _C_type;
+    typedef typename __rw_is_reference<_TypeT>::_C_type _C_type;
 
     // working around an HP aCC bug (see PR #25347)
     // NOTE: this fails for classes due to another bug (PR #25384)
@@ -267,12 +267,12 @@
 template <class _TypeT>
 struct __rw_type_traits
 {
-    typedef _TYPENAME __rw_is_const<_TypeT>::_C_type     _C_non_const_type;
-    typedef _TYPENAME __rw_is_volatile<_TypeT>::_C_type  _C_non_volatile_type;
-    typedef _TYPENAME __rw_is_pointer<_TypeT>::_C_type   _C_non_pointer_type;
-    typedef _TYPENAME __rw_is_reference<_TypeT>::_C_type _C_non_reference_type;
+    typedef typename __rw_is_const<_TypeT>::_C_type     _C_non_const_type;
+    typedef typename __rw_is_volatile<_TypeT>::_C_type  _C_non_volatile_type;
+    typedef typename __rw_is_pointer<_TypeT>::_C_type   _C_non_pointer_type;
+    typedef typename __rw_is_reference<_TypeT>::_C_type _C_non_reference_type;
 
-    typedef _TYPENAME __rw_is_cv_qualified<_TypeT>::_C_type
+    typedef typename __rw_is_cv_qualified<_TypeT>::_C_type
     _C_non_cv_qualified_type;
 
     enum {

Modified: stdcxx/trunk/include/set
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/set?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/set (original)
+++ stdcxx/trunk/include/set Fri Aug  1 13:51:17 2008
@@ -98,27 +98,24 @@
         // const iterators. This is intentional, the purpose is to
         // prevent the modification of a set element after it has
         // been inserted.
-    typedef _TYPENAME __rep_type::reference               reference;
-    typedef _TYPENAME __rep_type::const_reference         const_reference;
-    typedef _TYPENAME __rep_type::const_iterator          iterator;
-    typedef _TYPENAME __rep_type::const_iterator          const_iterator;
-    typedef _TYPENAME __rep_type::size_type               size_type;
-    typedef _TYPENAME __rep_type::difference_type         difference_type;
-    typedef _TYPENAME __rep_type::pointer                 pointer;
-    typedef _TYPENAME __rep_type::const_pointer           const_pointer;
-#if !defined (_RWSTD_NO_MEMBER_TEMPLATES)
-    typedef _TYPENAME __rep_type::const_reverse_iterator  reverse_iterator;
-#else
-    typedef _TYPENAME __rep_type::reverse_iterator        reverse_iterator;
-#endif
-    typedef _TYPENAME __rep_type::const_reverse_iterator
+    typedef typename __rep_type::reference               reference;
+    typedef typename __rep_type::const_reference         const_reference;
+    typedef typename __rep_type::const_iterator          iterator;
+    typedef typename __rep_type::const_iterator          const_iterator;
+    typedef typename __rep_type::size_type               size_type;
+    typedef typename __rep_type::difference_type         difference_type;
+    typedef typename __rep_type::pointer                 pointer;
+    typedef typename __rep_type::const_pointer           const_pointer;
+    typedef typename __rep_type::const_reverse_iterator  reverse_iterator;
+    typedef typename __rep_type::const_reverse_iterator
         const_reverse_iterator;
 
     //
     // construct/copy/destroy
     //
-    _EXPLICIT set (const key_compare    &__cmp   = key_compare (),
-                   const allocator_type &__alloc = allocator_type ())
+    explicit
+    set (const key_compare    &__cmp   = key_compare (),
+         const allocator_type &__alloc = allocator_type ())
         : _C_rep (__cmp, __alloc) { }
 
     template<class _InputIter>
@@ -161,7 +158,7 @@
     // modifiers
     //
     pair<iterator, bool> insert (const value_type& __x) {
-        const pair<_TYPENAME __rep_type::iterator, bool> __p =
+        const pair<typename __rep_type::iterator, bool> __p =
             _C_rep.insert (__x, false); 
         return pair<iterator, bool>(__p.first, __p.second);
     }
@@ -184,18 +181,18 @@
 
     // working around MSVC bugs
     iterator insert (iterator __it, const value_type& __x) {
-        typedef _TYPENAME __rep_type::iterator _Iterator;
+        typedef typename __rep_type::iterator _Iterator;
         return _RWSTD_REINTERPRET_CAST (iterator&, _C_rep.insert (
                    _RWSTD_REINTERPRET_CAST (_Iterator&, __it), __x, false));
     }
 
     void erase (iterator __it) {
-        typedef _TYPENAME __rep_type::iterator _Iterator;
+        typedef typename __rep_type::iterator _Iterator;
         _C_rep.erase (_RWSTD_REINTERPRET_CAST (_Iterator&, __it));
     }
 
     void erase (iterator __first, iterator __last) {
-        typedef _TYPENAME __rep_type::iterator _Iterator;
+        typedef typename __rep_type::iterator _Iterator;
         _C_rep.erase (_RWSTD_REINTERPRET_CAST (_Iterator&, __first),
                       _RWSTD_REINTERPRET_CAST (_Iterator&, __last));
     }
@@ -303,22 +300,22 @@
     //
     // types
     //
-    typedef _TYPENAME __rep_type::reference               reference;
-    typedef _TYPENAME __rep_type::const_reference         const_reference;
-    typedef _TYPENAME __rep_type::iterator                iterator;
-    typedef _TYPENAME __rep_type::const_iterator          const_iterator;
-    typedef _TYPENAME __rep_type::size_type               size_type;
-    typedef _TYPENAME __rep_type::difference_type         difference_type;
-    typedef _TYPENAME __rep_type::pointer                 pointer;
-    typedef _TYPENAME __rep_type::const_pointer           const_pointer;
-    typedef _TYPENAME __rep_type::reverse_iterator        reverse_iterator;
-    typedef _TYPENAME __rep_type::const_reverse_iterator
+    typedef typename __rep_type::reference               reference;
+    typedef typename __rep_type::const_reference         const_reference;
+    typedef typename __rep_type::iterator                iterator;
+    typedef typename __rep_type::const_iterator          const_iterator;
+    typedef typename __rep_type::size_type               size_type;
+    typedef typename __rep_type::difference_type         difference_type;
+    typedef typename __rep_type::pointer                 pointer;
+    typedef typename __rep_type::const_pointer           const_pointer;
+    typedef typename __rep_type::reverse_iterator        reverse_iterator;
+    typedef typename __rep_type::const_reverse_iterator
             const_reverse_iterator;
 
     //
     // construct/copy/destroy
     //
-    _EXPLICIT
+    explicit
     multiset (const key_compare &__cmp = key_compare (),
               const allocator_type &__alloc = allocator_type ())
         : _C_rep (__cmp, __alloc) { }

Modified: stdcxx/trunk/include/sstream
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/sstream?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/sstream (original)
+++ stdcxx/trunk/include/sstream Fri Aug  1 13:51:17 2008
@@ -103,22 +103,22 @@
     typedef _Traits                         traits_type;
     typedef _Allocator                      allocator_type;   // lwg issue 251
 
-    typedef _TYPENAME traits_type::int_type int_type;
-    typedef _TYPENAME traits_type::pos_type pos_type;
-    typedef _TYPENAME traits_type::off_type off_type;
+    typedef typename traits_type::int_type int_type;
+    typedef typename traits_type::pos_type pos_type;
+    typedef typename traits_type::off_type off_type;
 
-    _EXPLICIT
+    explicit
     basic_stringbuf (ios_base::openmode __mode = _RW::__rw_in_out)
         : basic_streambuf<char_type, traits_type>(__mode) {
         this->_C_own_buf (true);
     }
 
-    _EXPLICIT
+    explicit
     basic_stringbuf (const _C_string_type&,
                      ios_base::openmode = _RW::__rw_in_out);
 
     // undetectable extension
-    _EXPLICIT
+    explicit
     basic_stringbuf (const char_type*,
                      ios_base::openmode = _RW::__rw_in_out);
 
@@ -238,23 +238,23 @@
     typedef _Traits                          traits_type;
     typedef _Allocator                       allocator_type;
 
-    typedef _TYPENAME traits_type::int_type  int_type;
-    typedef _TYPENAME traits_type::pos_type  pos_type;
-    typedef _TYPENAME traits_type::off_type  off_type;
+    typedef typename traits_type::int_type  int_type;
+    typedef typename traits_type::pos_type  pos_type;
+    typedef typename traits_type::off_type  off_type;
   
-    _EXPLICIT
+    explicit
     basic_istringstream (ios_base::openmode __mode = ios_base::in)
         : basic_istream<char_type, traits_type>(rdbuf ()),
           _C_sb (__mode | ios_base::in) { }
 
-    _EXPLICIT
+    explicit
     basic_istringstream (const _C_string_type& __str, 
                          ios_base::openmode __mode = ios_base::in)
         : basic_istream<char_type, traits_type>(rdbuf ()),
           _C_sb (__str, __mode | ios_base::in) { }
 
     // undetectable extension
-    _EXPLICIT
+    explicit
     basic_istringstream (const char_type   * __s, 
                          ios_base::openmode __mode = ios_base::in)
         : basic_istream<char_type, traits_type>(rdbuf ()),
@@ -306,25 +306,25 @@
     typedef _Traits                         traits_type;
     typedef _Allocator                      allocator_type;
 
-    typedef _TYPENAME traits_type::int_type int_type;
-    typedef _TYPENAME traits_type::pos_type pos_type;
-    typedef _TYPENAME traits_type::off_type off_type;
+    typedef typename traits_type::int_type int_type;
+    typedef typename traits_type::pos_type pos_type;
+    typedef typename traits_type::off_type off_type;
 
     // NOTE: the constructors pass the address of a yet uninitialized
     //       data member to the constructor of the base class
-    _EXPLICIT
+    explicit
     basic_ostringstream (ios_base::openmode __mode = ios_base::out)
         : basic_ostream<char_type, traits_type> (rdbuf ()),
           _C_sb (__mode | ios_base::out) { }
         
-    _EXPLICIT
+    explicit
     basic_ostringstream (const _C_string_type  &__str, 
                          ios_base::openmode  __mode = ios_base::out)
         : basic_ostream<char_type, traits_type>(rdbuf ()),
           _C_sb (__str, __mode | ios_base::out) { }
 
     // undetectable extension
-    _EXPLICIT
+    explicit
     basic_ostringstream (const char_type    *__s, 
                          ios_base::openmode  __mode = ios_base::out)
         : basic_ostream<char_type, traits_type>(rdbuf ()),
@@ -376,23 +376,23 @@
     typedef _Traits                         traits_type;
     typedef _Allocator                      allocator_type;
 
-    typedef _TYPENAME traits_type::int_type int_type;
-    typedef _TYPENAME traits_type::pos_type pos_type;
-    typedef _TYPENAME traits_type::int_type off_type;
+    typedef typename traits_type::int_type int_type;
+    typedef typename traits_type::pos_type pos_type;
+    typedef typename traits_type::int_type off_type;
 
-    _EXPLICIT
+    explicit
     basic_stringstream (ios_base::openmode __mode = _RW::__rw_in_out)
         : basic_iostream<char_type, traits_type>(rdbuf ()),
           _C_sb (__mode) { }
 
-    _EXPLICIT
+    explicit
     basic_stringstream (const _C_string_type &__str,
                         ios_base::openmode __mode = _RW::__rw_in_out)
         : basic_iostream<char_type, traits_type>(rdbuf ()),
           _C_sb (__str, __mode) { }
 
     // undetectable extension
-    _EXPLICIT
+    explicit
     basic_stringstream (const char_type    *__s, 
                         ios_base::openmode __mode = _RW::__rw_in_out)
         : basic_iostream<char_type, traits_type>(rdbuf ()),

Modified: stdcxx/trunk/include/sstream.cc
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/sstream.cc?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/sstream.cc (original)
+++ stdcxx/trunk/include/sstream.cc Fri Aug  1 13:51:17 2008
@@ -250,7 +250,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-/* virtual */ _TYPENAME basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
+/* virtual */ typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
 basic_stringbuf<_CharT, _Traits, _Allocator>::
 underflow ()
 {
@@ -276,7 +276,7 @@
 
 
 template<class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
+typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
 basic_stringbuf<_CharT, _Traits, _Allocator>::
 overflow (int_type __c)
 {
@@ -314,7 +314,7 @@
 
 
 template<class _CharT, class _Traits, class _Allocator>
-/* virtual */ _TYPENAME basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
+/* virtual */ typename basic_stringbuf<_CharT, _Traits, _Allocator>::int_type
 basic_stringbuf<_CharT, _Traits, _Allocator>::
 pbackfail (int_type __c)
 {
@@ -404,7 +404,7 @@
 
 
 template<class _CharT, class _Traits, class _Allocator>
-/* virtual */ _TYPENAME basic_stringbuf<_CharT, _Traits, _Allocator>::pos_type
+/* virtual */ typename basic_stringbuf<_CharT, _Traits, _Allocator>::pos_type
 basic_stringbuf<_CharT, _Traits, _Allocator>::
 seekoff (off_type __off, ios_base::seekdir __way, ios_base::openmode __which)
 {
@@ -483,7 +483,7 @@
 
 
 template<class _CharT, class _Traits, class _Allocator>
-/* virtual */ _TYPENAME basic_stringbuf<_CharT, _Traits, _Allocator>::pos_type
+/* virtual */ typename basic_stringbuf<_CharT, _Traits, _Allocator>::pos_type
 basic_stringbuf<_CharT, _Traits, _Allocator>::
 seekpos (pos_type __pos, ios_base::openmode __which)
 {

Modified: stdcxx/trunk/include/stack
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/stack?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/stack (original)
+++ stdcxx/trunk/include/stack Fri Aug  1 13:51:17 2008
@@ -74,11 +74,11 @@
 public:
     
     typedef _Container                                container_type;
-    typedef _TYPENAME container_type::value_type      value_type;
-    typedef _TYPENAME container_type::size_type       size_type;
+    typedef typename container_type::value_type      value_type;
+    typedef typename container_type::size_type       size_type;
     // lwg issue 307: additional typedefs
-    typedef _TYPENAME container_type::reference       reference;
-    typedef _TYPENAME container_type::const_reference const_reference;
+    typedef typename container_type::reference       reference;
+    typedef typename container_type::const_reference const_reference;
 
 protected:
     
@@ -86,7 +86,7 @@
 
 public:
 
-    _EXPLICIT
+    explicit
     stack (const container_type &__c = container_type ()) 
         : c (__c) { }
 

Modified: stdcxx/trunk/include/stdexcept
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/stdexcept?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/stdexcept (original)
+++ stdcxx/trunk/include/stdexcept Fri Aug  1 13:51:17 2008
@@ -45,11 +45,11 @@
 // 19.1.1
 struct _RWSTD_EXPORT logic_error: _RW::__rw_exception
 {
-    _EXPLICIT logic_error (const string& __str)
+    explicit logic_error (const string& __str)
         : _RW::__rw_exception (__str) { }
 
     // extension
-    _EXPLICIT logic_error (const char *__s = 0)
+    explicit logic_error (const char *__s = 0)
         : _RW::__rw_exception (__s) { }
 
     virtual ~logic_error () _THROWS (());
@@ -59,11 +59,11 @@
 // 19.1.2
 struct _RWSTD_EXPORT domain_error: logic_error
 {
-    _EXPLICIT domain_error (const string &__str)
+    explicit domain_error (const string &__str)
         : logic_error (__str) { }
 
     // extension
-    _EXPLICIT domain_error (const char *__s = 0)
+    explicit domain_error (const char *__s = 0)
         : logic_error (__s) { }
 
     virtual ~domain_error () _THROWS (());
@@ -73,11 +73,11 @@
 // 19.1.3
 struct _RWSTD_EXPORT invalid_argument: logic_error
 {
-    _EXPLICIT invalid_argument (const string &__str)
+    explicit invalid_argument (const string &__str)
         : logic_error (__str) { }
 
     // extension
-    _EXPLICIT invalid_argument (const char *__s = 0)
+    explicit invalid_argument (const char *__s = 0)
         : logic_error (__s) { }
 
     virtual ~invalid_argument () _THROWS (());
@@ -87,11 +87,11 @@
 // 19.1.4
 struct _RWSTD_EXPORT length_error: logic_error
 {
-    _EXPLICIT length_error (const string &__str)
+    explicit length_error (const string &__str)
         : logic_error (__str) { }
 
     // extension
-    _EXPLICIT length_error (const char *__s = 0)
+    explicit length_error (const char *__s = 0)
         : logic_error (__s) { }
 
     virtual ~length_error () _THROWS (());
@@ -101,11 +101,11 @@
 // 19.1.5
 struct _RWSTD_EXPORT out_of_range: logic_error
 {
-    _EXPLICIT out_of_range (const string &__str)
+    explicit out_of_range (const string &__str)
         : logic_error (__str) { }
 
     // extension
-    _EXPLICIT out_of_range (const char *__s = 0)
+    explicit out_of_range (const char *__s = 0)
         : logic_error (__s) { }
 
     virtual ~out_of_range () _THROWS (());
@@ -115,11 +115,11 @@
 // 19.1.6
 struct _RWSTD_EXPORT runtime_error: _RW::__rw_exception
 {
-    _EXPLICIT runtime_error (const string &__str)
+    explicit runtime_error (const string &__str)
         : _RW::__rw_exception (__str) { }
 
     // extension
-    _EXPLICIT runtime_error (const char *__s = 0)
+    explicit runtime_error (const char *__s = 0)
         : _RW::__rw_exception (__s) { }
 
     virtual ~runtime_error () _THROWS (());
@@ -129,11 +129,11 @@
 // 19.1.7
 struct _RWSTD_EXPORT range_error: runtime_error
 {
-    _EXPLICIT range_error (const string &__str)
+    explicit range_error (const string &__str)
         : runtime_error (__str) { }
 
     // extension
-    _EXPLICIT range_error (const char *__s = 0)
+    explicit range_error (const char *__s = 0)
         : runtime_error (__s) { }
 
     virtual ~range_error () _THROWS (());
@@ -143,11 +143,11 @@
 // 19.1.8
 struct _RWSTD_EXPORT overflow_error: runtime_error
 {
-    _EXPLICIT overflow_error (const string &__str)
+    explicit overflow_error (const string &__str)
         : runtime_error (__str) { }
 
     // extension
-    _EXPLICIT overflow_error (const char *__s = 0)
+    explicit overflow_error (const char *__s = 0)
         : runtime_error (__s) { }
 
     virtual ~overflow_error () _THROWS (());
@@ -157,11 +157,11 @@
 // 19.1.9
 struct _RWSTD_EXPORT underflow_error: runtime_error
 {
-    _EXPLICIT underflow_error (const string &__str)
+    explicit underflow_error (const string &__str)
         : runtime_error (__str) { }
 
     // extension
-    _EXPLICIT underflow_error (const char *__s = 0)
+    explicit underflow_error (const char *__s = 0)
         : runtime_error (__s) { }
 
     virtual ~underflow_error () _THROWS (());

Modified: stdcxx/trunk/include/streambuf
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/streambuf?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/streambuf (original)
+++ stdcxx/trunk/include/streambuf Fri Aug  1 13:51:17 2008
@@ -66,9 +66,9 @@
 public:
     typedef _CharT                          char_type;
     typedef _Traits                         traits_type;
-    typedef _TYPENAME traits_type::int_type int_type;
-    typedef _TYPENAME traits_type::pos_type pos_type;
-    typedef _TYPENAME traits_type::off_type off_type;
+    typedef typename traits_type::int_type int_type;
+    typedef typename traits_type::pos_type pos_type;
+    typedef typename traits_type::off_type off_type;
 
     virtual ~basic_streambuf () { }
 
@@ -427,7 +427,7 @@
 
 
 template<class _CharT, class _Traits>
-inline _TYPENAME basic_streambuf<_CharT, _Traits>::int_type
+inline typename basic_streambuf<_CharT, _Traits>::int_type
 basic_streambuf<_CharT, _Traits>::
 sbumpc ()
 {
@@ -444,7 +444,7 @@
 
 
 template<class _CharT, class _Traits>
-inline _TYPENAME basic_streambuf<_CharT, _Traits>::int_type
+inline typename basic_streambuf<_CharT, _Traits>::int_type
 basic_streambuf<_CharT, _Traits>::
 sputbackc (char_type __c)
 {
@@ -458,7 +458,7 @@
 
 
 template<class _CharT, class _Traits>
-inline _TYPENAME basic_streambuf<_CharT, _Traits>::int_type
+inline typename basic_streambuf<_CharT, _Traits>::int_type
 basic_streambuf<_CharT, _Traits>::
 sputc (char_type __ch)
 {
@@ -480,7 +480,7 @@
 
 
 template<class _CharT, class _Traits>
-inline _TYPENAME basic_streambuf<_CharT, _Traits>::int_type
+inline typename basic_streambuf<_CharT, _Traits>::int_type
 basic_streambuf<_CharT, _Traits>::
 sungetc ()
 {

Modified: stdcxx/trunk/include/streambuf.cc
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/streambuf.cc?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/streambuf.cc (original)
+++ stdcxx/trunk/include/streambuf.cc Fri Aug  1 13:51:17 2008
@@ -49,7 +49,7 @@
 
 
 template <class _CharT, class _Traits>
-_TYPENAME basic_streambuf<_CharT, _Traits>::int_type
+typename basic_streambuf<_CharT, _Traits>::int_type
 basic_streambuf<_CharT, _Traits>::
 uflow ()
 {

Modified: stdcxx/trunk/include/string
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/string?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/string (original)
+++ stdcxx/trunk/include/string Fri Aug  1 13:51:17 2008
@@ -47,14 +47,12 @@
 _RWSTD_NAMESPACE (std) { 
 
 
-#if    (   defined (_RWSTD_NO_MEMBER_TEMPLATES)   \
-        || defined (_RWSTD_NO_EXTERN_MEMBER_TEMPLATE))
+#if defined _RWSTD_NO_EXTERN_MEMBER_TEMPLATE
 #  define _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 #endif   // _RWSTD_NO_STRING_MEMBER_TEMPLATES
 
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-#  ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
 _EXPORT
 template <class _CharT, class _Traits, class _Alloc,
@@ -70,8 +68,7 @@
 __rw_replace_aux (std::basic_string<_CharT, _Traits, _Alloc>&, 
                   _StringIter, _StringIter, _InputIter, _InputIter);
 
-#  endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
+#endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
 
 _EXPORT
@@ -81,7 +78,7 @@
 public:
   
     typedef _Traits                               traits_type;
-    typedef _TYPENAME traits_type::char_type      value_type;
+    typedef typename traits_type::char_type      value_type;
     typedef _Allocator                            allocator_type;
 
     typedef _RW::__string_ref<value_type, traits_type, allocator_type>
@@ -92,12 +89,12 @@
     typedef  _RWSTD_REBIND(allocator_type, _C_string_ref_type)  
         _C_ref_alloc_type;
 
-    typedef _TYPENAME allocator_type::size_type       size_type;
-    typedef _TYPENAME allocator_type::difference_type difference_type;
-    typedef _TYPENAME allocator_type::reference       reference;
-    typedef _TYPENAME allocator_type::const_reference const_reference;
-    typedef _TYPENAME allocator_type::pointer         pointer;
-    typedef _TYPENAME allocator_type::const_pointer   const_pointer;
+    typedef typename allocator_type::size_type       size_type;
+    typedef typename allocator_type::difference_type difference_type;
+    typedef typename allocator_type::reference       reference;
+    typedef typename allocator_type::const_reference const_reference;
+    typedef typename allocator_type::pointer         pointer;
+    typedef typename allocator_type::const_pointer   const_pointer;
 
 #ifndef _RWSTD_NO_DEBUG_ITER
 
@@ -158,7 +155,7 @@
 #endif
 
     // 21.3.1, p2
-    _EXPLICIT basic_string (const allocator_type &__alloc = allocator_type ())
+    explicit basic_string (const allocator_type &__alloc = allocator_type ())
         : allocator_type (__alloc), _C_data (_C_nullref ()->data ()) { }
 
     // lwg issue #42
@@ -180,8 +177,6 @@
                   const allocator_type& = allocator_type ());
 
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
     // 21.3.1, p15
     template <class _InputIter>
     basic_string (_InputIter __first, _InputIter __last, 
@@ -191,8 +186,6 @@
                  __first, __last);
     }
 
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-
     basic_string (const_pointer, const_pointer, const allocator_type&
                   _RWSTD_REDECLARED_DEFAULT (allocator_type ()));
 
@@ -310,8 +303,6 @@
         return append (__s, traits_type::length (__s));
     }
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
     template<class _InputIter>
     basic_string& append (_InputIter __first, _InputIter __last) {
         // resolves to append (size_type, value_type) if _InputIter
@@ -332,14 +323,6 @@
         return append (__n, __c);
     }
 
-#else   // if defined (_RWSTD_NO_MEMBER_TEMPLATES)
-
-    basic_string& append (const_pointer __first, const_pointer __last) {
-        return append (__first, __last - __first);
-    }
-
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-
     basic_string& append (size_type, value_type);
 
     // lwg issue 7
@@ -360,8 +343,6 @@
     }
 
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
     template<class _InputIter>
     basic_string& assign (_InputIter __first, _InputIter __last) {
         // resolves to assign (size_type, value_type) if _InputIter
@@ -383,15 +364,6 @@
         return replace (size_type (), size (), __n, __c);
     }
 
-#else   // if defined (_RWSTD_NO_MEMBER_TEMPLATES)
-
-    basic_string& assign (const_pointer __first, const_pointer __last) {
-        replace (size_type (), size (), __first, __last - __first);
-        return *this;
-    }
-
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-
     basic_string& assign (size_type __n, value_type __c) {
         return replace (size_type (), size (), __n, __c);
     }
@@ -415,8 +387,6 @@
         return insert (__inx, &__c, 1), begin () + __inx;
     }
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
     template<class _InputIter>
     void insert (iterator __p, _InputIter __first, _InputIter __last) {
         insert (__p, __first, __last, _RWSTD_DISPATCH (_InputIter));
@@ -461,18 +431,6 @@
 
 #  endif   // _RWSTD_NO_DEBUG_ITER
 
-#else   // if defined (_RWSTD_NO_MEMBER_TEMPLATES)
-
-    void insert (iterator __p, const_pointer __first, const_pointer __last) {
-        if (__first >= _C_data && __first <= _C_data + size ())
-            insert (_C_off (__p), basic_string (__first, __last));
-        else
-            replace (__p, __p, __first, __last);
-    }
-
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-    
-
     void insert (iterator __it, size_type __n, value_type __c) {
         replace (_C_off (__it), size_type (), __n, __c);
     }
@@ -581,16 +539,14 @@
         return replace (_C_off (__first), _C_off (__first, __last), __n, __c);
     }
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
-#  ifndef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#ifndef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
     template<class _InputIter>
     basic_string&
     replace (iterator __first1, iterator __last1, 
              _InputIter __first2, _InputIter __last2, void*);
 
-#  else   // if defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
+#else   // if defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
 
     template<class _InputIter>
     basic_string&
@@ -599,7 +555,7 @@
         return __rw_replace (*this, __first1, __last1, __first2, __last2);
     }
 
-#  endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
     basic_string&
     replace (iterator __first, iterator __last,
@@ -616,18 +572,6 @@
                         _RWSTD_DISPATCH (_InputIter));
     }
 
-#else   // if defined (_RWSTD_NO_MEMBER_TEMPLATES)
-
-    basic_string&
-    replace (iterator __first1, iterator __last1,
-             const_pointer __first2, const_pointer __last2) {
-        replace (_C_off (__first1), _C_off (__first1, __last1),
-                 __first2, size_type (__last2 - __first2));
-        return *this;
-    }
-
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-
 
     // 21.3.5.7, p1
     size_type copy (pointer, size_type, size_type = 0) const;
@@ -928,7 +872,7 @@
 
 
 template <class _CharT, class _Traits, class _Alloc>
-inline _TYPENAME basic_string<_CharT, _Traits, _Alloc>::size_type
+inline typename basic_string<_CharT, _Traits, _Alloc>::size_type
 basic_string<_CharT, _Traits, _Alloc>::
 _C_grow (size_type __from, size_type __to) const
 {
@@ -958,7 +902,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::iterator
+inline typename basic_string<_CharT, _Traits, _Allocator>::iterator
 basic_string<_CharT, _Traits, _Allocator>::
 begin ()
 {
@@ -976,7 +920,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+inline typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 max_size () const
 {
@@ -1005,7 +949,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::const_reference 
+inline typename basic_string<_CharT, _Traits, _Allocator>::const_reference 
 basic_string<_CharT, _Traits, _Allocator>::
 operator[] (size_type __pos) const
 {
@@ -1024,7 +968,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::reference
+inline typename basic_string<_CharT, _Traits, _Allocator>::reference
 basic_string<_CharT, _Traits, _Allocator>::
 operator[] (size_type __pos)
 {
@@ -1044,7 +988,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::const_reference
+inline typename basic_string<_CharT, _Traits, _Allocator>::const_reference
 basic_string<_CharT, _Traits, _Allocator>::
 at (size_type __pos) const
 {
@@ -1059,7 +1003,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::reference
+inline typename basic_string<_CharT, _Traits, _Allocator>::reference
 basic_string<_CharT, _Traits, _Allocator>::
 at (size_type __pos)
 {
@@ -1153,7 +1097,7 @@
 
 
 template <class _CharT, class _Traits , class _Allocator>
-inline _TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+inline typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find (value_type __c, size_type __pos) const
 {
@@ -1333,7 +1277,7 @@
 operator== (const _CharT*                                    __lhs, 
             const basic_string<_CharT, _Traits, _Allocator>& __rhs)
 {
-    const _TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+    const typename basic_string<_CharT, _Traits, _Allocator>::size_type
         __n = _Traits::length (__lhs);
 
     // avoid using basic_string<>::compare() for efficiency
@@ -1528,7 +1472,7 @@
 
 #  ifndef _RWSTD_NO_NONDEDUCED_CONTEXT
 #    define _RWSTD_STRING_SIZE_TYPE \
-            _TYPENAME _STD::basic_string<_CharT, _Traits, _Allocator>::size_type
+            typename _STD::basic_string<_CharT, _Traits, _Allocator>::size_type
 #  else
 #    define _RWSTD_STRING_SIZE_TYPE _RWSTD_SIZE_T
 #  endif   // _RWSTD_NO_NONDEDUCED_CONTEXT

Modified: stdcxx/trunk/include/string.cc
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/string.cc?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/string.cc (original)
+++ stdcxx/trunk/include/string.cc Fri Aug  1 13:51:17 2008
@@ -47,7 +47,7 @@
 #    ifndef _RWSTD_NO_STRING_NPOS_TYPE
 
 template <class _CharT, class _Traits, class _Allocator>
-const _TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+const typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 npos /* = SIZE_MAX */;
 
@@ -74,7 +74,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::_C_string_ref_type*
+typename basic_string<_CharT, _Traits, _Allocator>::_C_string_ref_type*
 basic_string<_CharT, _Traits, _Allocator>::
 _C_get_rep (size_type __cap, size_type __len)
 {
@@ -461,9 +461,7 @@
 }
 
 
-#ifndef _RWSTD_NO_MEMBER_TEMPLATES
-
-#  ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
 _EXPORT
 template <class _CharT, class _Traits, class _Alloc,
@@ -474,9 +472,9 @@
               _InputIter __first2, _InputIter __last2) {
 
     typedef _Traits                               traits_type;
-    typedef _TYPENAME traits_type::char_type      value_type;
+    typedef typename traits_type::char_type      value_type;
     typedef _Alloc                                allocator_type;
-    typedef _TYPENAME allocator_type::size_type   size_type;
+    typedef typename allocator_type::size_type   size_type;
 
     typedef _STD::basic_string<_CharT, _Traits, _Alloc> _C_string_type;
 
@@ -484,7 +482,7 @@
      _C_string_ref_type;
 
 
-#  else   // !defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
+#else   // !defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
 
 template<class _CharT, class _Traits, class _Allocator>
 template<class _InputIter>
@@ -497,7 +495,7 @@
 
     basic_string &__s = *this;
 
-#  endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#endif   // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
     _RWSTD_ASSERT_RANGE (__first1,
                          __s._C_make_iter (__s._C_data + __s.size ()));
@@ -519,7 +517,7 @@
         return __s.__replace_aux (__first1, __last1, __first2, __last2);
 
     _C_string_type __s3;
-    _TYPENAME _C_string_type::iterator __first3 = __s3.begin ();
+    typename _C_string_type::iterator __first3 = __s3.begin ();
     
     for ( ; !(__first2 == __last2); ++__first2, ++__first3) {
 
@@ -561,7 +559,7 @@
 // Avoids the possibility of multiple allocations
 // We still have to copy characters over one at a time.
 
-#  ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#ifdef _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
 _EXPORT
 template <class _CharT, class _Traits, class _Alloc,
@@ -572,18 +570,18 @@
                   _InputIter __first2, _InputIter __last2)
 {
     typedef _Traits                                   traits_type;
-    typedef _TYPENAME traits_type::char_type          value_type;
+    typedef typename traits_type::char_type          value_type;
     typedef _Alloc                                    allocator_type;
-    typedef _TYPENAME allocator_type::size_type       size_type;
-    typedef _TYPENAME allocator_type::difference_type difference_type;
-    typedef _TYPENAME allocator_type::pointer         pointer;
-    typedef _TYPENAME allocator_type::const_pointer   const_pointer;
-    typedef _TYPENAME allocator_type::const_reference const_reference;
+    typedef typename allocator_type::size_type       size_type;
+    typedef typename allocator_type::difference_type difference_type;
+    typedef typename allocator_type::pointer         pointer;
+    typedef typename allocator_type::const_pointer   const_pointer;
+    typedef typename allocator_type::const_reference const_reference;
 
     typedef _RW::__string_ref<value_type, traits_type, allocator_type>
     _C_string_ref_type;
 
-#  else   // if !defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
+#else   // if !defined (_RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES)
 
 template<class _CharT, class _Traits, class _Allocator>
 template<class _InputIter>
@@ -594,7 +592,7 @@
 {
     basic_string &__s = *this;
 
-#  endif  // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
+#endif  // _RWSTD_NO_STRING_OUTLINED_MEMBER_TEMPLATES
 
     _RWSTD_ASSERT_RANGE (__first1, __s._C_make_iter (__s._C_data 
                                                      + __s.size ()));
@@ -667,11 +665,9 @@
     return __s;
 }
 
-#endif   // _RWSTD_NO_MEMBER_TEMPLATES
-
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 copy (pointer __s, size_type __n, size_type __pos) const
 {
@@ -690,7 +686,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find (const_pointer __seq, size_type __off, size_type __len) const
 {
@@ -749,7 +745,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 rfind (const_pointer __s, size_type __pos, size_type __n) const
 {
@@ -771,7 +767,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find_first_of (const_pointer __s, size_type __pos, size_type __n) const
 {
@@ -788,7 +784,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find_last_of (const_pointer __s, size_type __pos, size_type __n) const
 {
@@ -809,7 +805,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find_first_not_of (const_pointer __s, size_type __pos, size_type __n) const
 {
@@ -832,7 +828,7 @@
 
 
 template <class _CharT, class _Traits, class _Allocator>
-_TYPENAME basic_string<_CharT, _Traits, _Allocator>::size_type
+typename basic_string<_CharT, _Traits, _Allocator>::size_type
 basic_string<_CharT, _Traits, _Allocator>::
 find_last_not_of (const_pointer __s, size_type __pos, size_type __n) const
 {

Modified: stdcxx/trunk/include/strstream
URL: http://svn.apache.org/viewvc/stdcxx/trunk/include/strstream?rev=681820&r1=681819&r2=681820&view=diff
==============================================================================
--- stdcxx/trunk/include/strstream (original)
+++ stdcxx/trunk/include/strstream Fri Aug  1 13:51:17 2008
@@ -55,7 +55,7 @@
 public:
 
     // D.7.1.1, p1
-    _EXPLICIT
+    explicit
     strstreambuf (streamsize __alsize = 0)
         : _Base () {
         _C_init (__alsize, 0, 0, 0, 0, 0, _C_dynamic);
@@ -176,11 +176,11 @@
     }
 
     // D.7.2.1, p1, and p2
-    _EXPLICIT
+    explicit
     istrstream (const char_type *__s, streamsize __n = 0)
         : _Base (rdbuf ()), _C_sb (__s, __n) { }
 
-    _EXPLICIT
+    explicit
     istrstream (char_type *__s, streamsize __n = 0)
         : _Base (rdbuf ()), _C_sb (__s, __n) { }
 



Mime
View raw message