28 #ifndef VC_TRAITS_IS_IMPLICIT_CAST_ALLOWED_H_
29 #define VC_TRAITS_IS_IMPLICIT_CAST_ALLOWED_H_
31 namespace Vc_VERSIONED_NAMESPACE
35 template <typename From, typename To, bool = std::is_integral<From>::value>
36 struct is_implicit_cast_allowed
37 :
public std::integral_constant<
38 bool, std::is_same<From, To>::value ||
39 (std::is_integral<To>::value &&
40 (std::is_same<typename std::make_unsigned<From>::type, To>::value ||
41 std::is_same<typename std::make_signed<From>::type, To>::value))> {
44 template <
typename From,
typename To>
45 struct is_implicit_cast_allowed<From, To, false> :
public std::is_same<From, To>::type {
48 template <
typename From,
typename To>
49 struct is_implicit_cast_allowed_mask :
public is_implicit_cast_allowed<From, To> {
54 #endif // VC_TRAITS_IS_IMPLICIT_CAST_ALLOWED_H_