Advertisement
Radfler

::copy_cv

May 6th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include <type_traits>
  2.  
  3. template<typename From, typename To>
  4. struct copy_const {
  5.    
  6.   using type = std::conditional_t<std::is_const<From>::value,
  7.     std::add_const_t<To>, To>;
  8.  
  9. };
  10.  
  11. template<typename From, typename To>
  12. struct copy_volatile {
  13.  
  14.   using type = std::conditional_t<std::is_volatile<From>::value,
  15.     std::add_volatile_t<To>, To>;
  16.  
  17. };
  18.  
  19. template<typename From, typename To>
  20. struct copy_cv {
  21.  
  22.   using type = typename copy_volatile<
  23.     From, typename copy_const<From, To>::type>::type;
  24.  
  25. };
  26.  
  27. template<typename From, typename To>
  28. using copy_const_t = typename copy_const<From, To>::type;
  29.  
  30. template<typename From, typename To>
  31. using copy_volatile_t = typename copy_volatile<From, To>::type;
  32.  
  33. template<typename From, typename To>
  34. using copy_cv_t = typename copy_cv<From, To>::type;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement