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.
>