stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Lemings" <Eric.Lemi...@roguewave.com>
Subject RE: An internal add_const_reference type trait
Date Tue, 10 Jun 2008 20:08:09 GMT
 

> -----Original Message-----
> From: Travis Vitek [mailto:Travis.Vitek@roguewave.com] 
> Sent: Tuesday, June 10, 2008 10:34 AM
> To: dev@stdcxx.apache.org
> Subject: RE: An internal add_const_reference type trait
> 
>  
> 
> >Eric Lemings wrote:
> >
> >Travis,
> >
> >According to our plans for type traits, is this how you 
> would define an
> >internal class template that combines the add_const<T> and
> >add_reference<T> type modifiers?
> >
> >	#include <rw/_type_traits.h>
> >
> >	_RWSTD_NAMESPACE (__rw) {
> >
> >	template <class _TypeT>
> >	class __rw_add_const_ref
> >	{
> >	    typedef _TYPENAME __rw_add_const<_TypeT>::type      _ConstT;
> >
> >	public:
> >
> >	    typedef _TYPENAME __rw_add_reference<_ConstT>::type type;
> >	};
> >
> >	}   // namespace __rw
> >
> 
> It is really close. I'd probably make it a struct and if there was any
> complicated logic it would move into an impl struct to reduce 
> clutter in
> the outer class.
> 
> If you need the above trait, I should let you know that TR1 had
> add_reference, but C++0x replaces that with add_lvalue_reference and
> add_rvalue_reference. So it you should probably use the new 
> names as we
> probably won't have an __rw_add_reference trait.
> 
> 	#include <rw/_typetraits.h>
> 
> 	_RWSTD_NAMESPACE (__rw) {
> 
> 	template <class _TypeT>
> 	struct __rw_add_const_ref
> 	{
> 	    typedef _TYPENAME __rw_add_lval_ref<
>               _TYPENAME __rw_add_const<_TypeT>::type
>           >::type type;
> 	};
> 
> 	}   // namespace __rw

Actually, wouldn't this be even better?

	template <class _TypeT>
	struct __rw_add_const_ref
	    : __rw_add_lval_ref<_RWSTD_ADD_CONST(_TypeT)> { };

Brad.

Mime
View raw message