Advertisement
Radfler

::is_static_castable

Jun 13th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include <type_traits>
  2.  
  3. namespace details {
  4.  
  5.   template<typename From, typename To>
  6.   using static_cast_expression = std::void_t<decltype(static_cast<To>(std::declval<From>()))>;
  7.  
  8.   template<typename From, typename To, typename = std::void_t<>>
  9.   struct is_static_castable : std::false_type { };
  10.  
  11.   template<typename From, typename To>
  12.   struct is_static_castable<From, To, static_cast_expression<From, To>> : std::true_type { };
  13.  
  14. }
  15.  
  16. template<typename From, typename To>
  17. struct is_static_castable : details::is_static_castable<From, To>::type { };
  18.  
  19. template<typename From, typename To>
  20. constexpr bool is_static_castable_v = is_static_castable<From, To>::value;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement