PageRenderTime 1302ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/ruin/type_traits/is_static_castable.hpp

http://github.com/sillycrown/Ruin
C++ Header | 31 lines | 20 code | 11 blank | 0 comment | 0 complexity | a59cb0b564b546cf7113a5ca6c92e292 MD5 | raw file
  1. #ifndef RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED
  2. #define RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED
  3. #include "ruin/mpl/bool.hpp"
  4. #include "ruin/utility/declval.hpp"
  5. namespace ruin {
  6. namespace detail {
  7. namespace type_traits {
  8. template < class S, class T, class = decltype(static_cast<T>(ruin::declval<S>())) >
  9. static ruin::mpl::true_
  10. is_static_castable_tester (int);
  11. template < class, class >
  12. static ruin::mpl::false_
  13. is_static_castable_tester (...);
  14. }} // namespace detail::type_traits
  15. template < class Source, class Target >
  16. struct is_static_castable
  17. : public decltype(ruin::detail::type_traits::is_static_castable_tester<Source, Target>(0))
  18. { };
  19. }
  20. #endif // RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED