Opened 11 years ago
Closed 4 years ago
#6577 closed Feature Requests (obsolete)
Add meta-function to extract the raw type, meta-function to compare raw types
Reported by: | Daryle Walker | Owned by: | John Maddock |
---|---|---|---|
Milestone: | Boost 1.50.0 | Component: | type_traits |
Version: | Boost Development Trunk | Severity: | Not Applicable |
Keywords: | Cc: |
Description
Based on the work I did on change-set [77046], can we add my two type-traits to the general library?
The first one extracts the raw type, that removes the top-level reference, const, and/or volatile qualifiers from a type expression. You need the raw type if you want to make a new object and/or apply your own transformations.
template < typename T > struct remove_cv_ref { typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_cv<T>::type>::type>::type type; };
Unlike my patch code, the version here can handle "T const & volatile". (I don't think automatic code can add a cv-qualifier after a reference, that's why I didn't have it. We have to be more general here.)
The second trait would work like is_same, but compare the raw types.
template < typename T, typename U > struct is_related : public ::boost::is_same< typename ::boost::detail::remove_cv_ref<T>::type, typename ::boost::detail::remove_cv_ref<U>::type > {};
Like the guy I got the idea from, you could use a template alias to implement this in C++2011.
Remove_cv_ref is now in the lib.