incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek" <Travis.Vi...@roguewave.com>
Subject RE: An internal add_const_reference type trait
Date Tue, 10 Jun 2008 20:28:18 GMT
 

Eric Lemings wrote:
>
>Travis Vitek wrote:
>> 
>> >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)> { };
>

Ah yes, assuming that I continue to provide the macros. :)


>Brad.
>

Mime
View raw message