28#ifndef VC_TRAITS_IS_IMPLICIT_CAST_ALLOWED_H_
29#define VC_TRAITS_IS_IMPLICIT_CAST_ALLOWED_H_
31namespace Vc_VERSIONED_NAMESPACE
35template <typename From, typename To, bool = std::is_integral<From>::value>
36struct 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))> {
44template <
typename From,
typename To>
45struct is_implicit_cast_allowed<From, To, false> :
public std::is_same<From, To>::type {
48template <
typename From,
typename To>
49struct is_implicit_cast_allowed_mask :
public is_implicit_cast_allowed<From, To> {