Brad,
I just noticed that you aren't applying SVN properties to all of the files that you are adding. New headers and source should get the svn:eol-style and svn:keywords properties set. Ideally this would be done before you submit the file for the first time, but you can add the properties later. I believe that the command sequence on non-windows systems is $ svn propset svn:eol-style native <file> $ svn propset svn:keywords Id <file> Travis -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Fri 6/20/2008 5:25 PM To: [EMAIL PROTECTED] Subject: svn commit: r670099 - in /stdcxx/branches/4.3.x/include: rw/_ref_wrap.h tuple Author: elemings Date: Fri Jun 20 17:25:39 2008 New Revision: 670099 URL: http://svn.apache.org/viewvc?rev=670099&view=rev Log: 2008-06-21 Eric Lemings <[EMAIL PROTECTED]> STDCXX-958 * include/rw/_ref_wrap.h: Add internal header for reference wrappers. (Currently just an empty class template.) * include/tuple: Add helpers for deducing return type of make_tuple() function. (make_tuple): Implemented and documented. Added: stdcxx/branches/4.3.x/include/rw/_ref_wrap.h Modified: stdcxx/branches/4.3.x/include/tuple Added: stdcxx/branches/4.3.x/include/rw/_ref_wrap.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_ref_wrap.h?rev=670099&view=auto ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_ref_wrap.h (added) +++ stdcxx/branches/4.3.x/include/rw/_ref_wrap.h Fri Jun 20 17:25:39 2008 @@ -0,0 +1,63 @@ +// -*- C++ -*- +/*************************************************************************** + * + * This is an internal header file used to implement the C++ Standard + * Library. It should never be #included directly by a program. + * + * $Id$ + * + *************************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + * Copyright 2008 Rogue Wave Software. + * + **************************************************************************/ + +#ifndef _RWSTD_RW_REF_WRAP_INCLUDED +# define _RWSTD_RW_REF_WRAP_INCLUDED + +# include <rw/_defs.h> + +# if !defined _RWSTD_NO_EXT_CXX_0X + + +_RWSTD_NAMESPACE (__rw) { + + +/** + * @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. + */ + +template <class _Type> +class __rw_ref_wrap +{ + +}; + + +} // namespace __rw + + +# endif // !defined _RWSTD_NO_EXT_CXX_0X + +#endif // _RWSTD_RW_REF_WRAP_INCLUDED Modified: stdcxx/branches/4.3.x/include/tuple URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/tuple?rev=670099&r1=670098&r2=670099&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/tuple (original) +++ stdcxx/branches/4.3.x/include/tuple Fri Jun 20 17:25:39 2008 @@ -36,9 +36,9 @@ # error _RWSTD_NO_EXT_CXX_0X defined and C++0x header included # endif // defined _RWSTD_NO_EXT_CXX_0X -# include <rw/_meta_cv.h> // for __rw_add_const -# include <rw/_meta_help.h> // for __rw_integral_constant -# include <rw/_meta_ref.h> // for __rw_add_lvalue_reference +# include <type_traits> + +# include <rw/_ref_wrap.h> # include <rw/_tuple.h> # include <rw/_tuple_traits.h> @@ -48,13 +48,37 @@ struct __rw_ignore { /* empty */ }; -/// Transforms _Type into a suitable make_tuple() return type. template <class _Type> -struct __rw_make_tuple { - /// @todo Deduce correct return type. +struct __rw_deduce_reference +{ typedef _Type type; }; +template <class _Type> +struct __rw_deduce_reference< __rw_ref_wrap<_Type> > +{ + typedef _Type& type; +}; + +template <class _Type> +struct __rw_deduce_reference< const __rw_ref_wrap<_Type> > +{ + typedef _Type& type; +}; + +/** + * @internal + * Transform a tuple element type into a suitable make_tuple() return + * type. + * @tparam _Type A tuple element type. + */ +template <class _Type> +class __rw_make_tuple +{ + typedef _TYPENAME _RWSTD_DECAY(_Type) _Decay; + typedef _TYPENAME __rw_deduce_reference<_Decay>::type type; +}; + } // namespace __rw @@ -69,9 +93,24 @@ # if !defined _RWSTD_NO_RVALUE_REFERENCES +/** + * @function make_tuple + * + * Create a new tuple from a list of element values. This function + * constructs a new tuple from the corresponding element values by + * utilizing move semantics. + * + * @tparam _Types The list of elements types in the tuple. + * @param __values A corresponding list of element values. + * @return A tuple object containing the given element values. + */ template <class... _Types> tuple<_TYPENAME _RW::__rw_make_tuple<_Types>::type...> -make_tuple (_Types&&... __values); +make_tuple (_Types&&... __values) +{ + typedef tuple<_TYPENAME _RW::__rw_make_tuple<_Types>::type...> _Tuple; + return _Tuple (std::forward<_Types> (__values)...); +} template <class... _TypesT, class... _TypesU> tuple<_TypesT..., _TypesU...>