Author: faridz
Date: Mon Sep 22 09:12:52 2008
New Revision: 697885
URL: http://svn.apache.org/viewvc?rev=697885&view=rev
Log:
2008-09-22 Farid Zaripov <[EMAIL PROTECTED]>
STDCXX-976
* include/rw/_specialized.h: Reverted r694675.
(uninitialized_copy): Use ::new() instead of __rw::__rw_construct().
Modified:
stdcxx/branches/4.2.x/include/rw/_specialized.h
Modified: stdcxx/branches/4.2.x/include/rw/_specialized.h
URL:
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_specialized.h?rev=697885&r1=697884&r2=697885&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_specialized.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_specialized.h Mon Sep 22 09:12:52 2008
@@ -52,6 +52,11 @@
#endif // _RWSTD_RW_NEW_H_INCLUDED
+#ifndef _RWSTD_RW_ITERBASE_H_INCLUDED
+# include <rw/_iterbase.h>
+#endif // _RWSTD_RW_ITERBASE_H_INCLUDED
+
+
_RWSTD_NAMESPACE (__rw) {
@@ -93,29 +98,12 @@
template <class _TypeT, class _TypeU>
inline void
-__rw_construct (_TypeT* __p, const _TypeU& __val)
-{
- ::new (_RWSTD_STATIC_CAST (void*, __p)) _TypeT (__val);
-}
-
-
-template <class _TypeT, class _TypeU>
-inline void
__rw_construct (volatile _TypeT* __p, _TypeU& __val)
{
// remove volatile before invoking operator new
__rw_construct (_RWSTD_CONST_CAST (_TypeT*, __p), __val);
}
-
-template <class _TypeT, class _TypeU>
-inline void
-__rw_construct (volatile _TypeT* __p, const _TypeU& __val)
-{
- // remove volatile before invoking operator new
- __rw_construct (_RWSTD_CONST_CAST (_TypeT*, __p), __val);
-}
-
#else // #ifdef _RWSTD_NO_PART_SPEC_OVERLOAD
template <class _TypeT, class _TypeU>
@@ -179,10 +167,14 @@
_ForwardIterator __res)
{
const _ForwardIterator __start = __res;
+ typedef _TYPENAME iterator_traits<_ForwardIterator>::value_type _TypeT;
_TRY {
- for (; __first != __last; ++__first, ++__res)
- _RW::__rw_construct (&*__res, *__first);
+ for (; __first != __last; ++__first, ++__res) {
+ volatile void* const __ptr =
+ _RWSTD_STATIC_CAST (volatile void*, &*__res);
+ ::new (_RWSTD_CONST_CAST (void*, __ptr)) _TypeT (*__first);
+ }
}
_CATCH (...) {
_RW::__rw_destroy (__start, __res);