14 #ifndef LLVM_ADT_BIT_H
15 #define LLVM_ADT_BIT_H
19 #include <type_traits>
27 typename To,
typename From,
28 typename = std::enable_if_t<
sizeof(To) ==
sizeof(
From)>
29 #if (__has_feature(is_trivially_constructible) && defined(_LIBCPP_VERSION)) || \
30 (defined(__GNUC__) && __GNUC__ >= 5)
32 typename = std::enable_if_t<std::is_trivially_constructible<To>::value>
33 #elif __has_feature(is_trivially_constructible)
35 typename = std::enable_if_t<__is_trivially_constructible(To)>
39 #if (__has_feature(is_trivially_copyable) && defined(_LIBCPP_VERSION)) || \
40 (defined(__GNUC__) && __GNUC__ >= 5)
42 typename = std::enable_if_t<std::is_trivially_copyable<To>::value>,
43 typename = std::enable_if_t<std::is_trivially_copyable<From>::value>
44 #elif __has_feature(is_trivially_copyable)
46 typename = std::enable_if_t<__is_trivially_copyable(To)>,
47 typename = std::enable_if_t<__is_trivially_copyable(
From)>