/ruin/type_traits/is_static_castable.hpp
C++ Header | 31 lines | 20 code | 11 blank | 0 comment | 0 complexity | a59cb0b564b546cf7113a5ca6c92e292 MD5 | raw file
-
- #ifndef RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED
- #define RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED
-
- #include "ruin/mpl/bool.hpp"
- #include "ruin/utility/declval.hpp"
-
- namespace ruin {
-
- namespace detail {
-
- namespace type_traits {
-
- template < class S, class T, class = decltype(static_cast<T>(ruin::declval<S>())) >
- static ruin::mpl::true_
- is_static_castable_tester (int);
-
- template < class, class >
- static ruin::mpl::false_
- is_static_castable_tester (...);
-
- }} // namespace detail::type_traits
-
- template < class Source, class Target >
- struct is_static_castable
- : public decltype(ruin::detail::type_traits::is_static_castable_tester<Source, Target>(0))
- { };
-
- }
-
- #endif // RUIN_TYPE_TRAITS_IS_STATIC_CASTABLE_HPP_INCLUDED