>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 >Also, it'd be nice if you jot down some of these plans for type traits >on the C++0x Wiki <http://wiki.apache.org/stdcxx/Cpp0x>; e.g., header >names, internal utilities, TODO work, etc. ;) Yes, I know. Given that discussion on the topic has died down I could actually document what we've arrived at. > >Thanks, >Brad. >