@@ -621,8 +621,10 @@ using i32 = __INT32_TYPE__;
621
621
using u32 = __UINT32_TYPE__;
622
622
using i64 = __INT64_TYPE__;
623
623
using u64 = __UINT64_TYPE__;
624
+ #if defined(__SIZEOF_INT128__)
624
625
using i128 = __int128;
625
626
using u128 = unsigned __int128;
627
+ #endif
626
628
627
629
namespace utility {
628
630
template<class T1, class T2>
@@ -906,18 +908,22 @@ struct traits {
906
908
907
909
using key_type = decltype([] {
908
910
if constexpr (max_len <= sizeof(u8)) { return u8{}; }
909
- else if constexpr (max_len <= sizeof(u16)) { return u16{}; }
910
- else if constexpr (max_len <= sizeof(u32)) { return u32{}; }
911
- else if constexpr (max_len <= sizeof(u64)) { return u64{}; }
912
- else if constexpr (max_len <= sizeof(u128)) { return u128{}; }
911
+ else if constexpr (max_len <= sizeof(u16)) { return u16{}; }
912
+ else if constexpr (max_len <= sizeof(u32)) { return u32{}; }
913
+ else if constexpr (max_len <= sizeof(u64)) { return u64{}; }
914
+ #if defined(__SIZEOF_INT128__)
915
+ else if constexpr (max_len <= sizeof(u128)) { return u128{}; }
916
+ #endif
913
917
}());
914
918
915
919
using mapped_type = decltype([] {
916
920
if constexpr (entries.size() < u8(u8{}-1u)) { return u8{}; }
917
921
else if constexpr (entries.size() < u16(u16{}-1u)) { return u16{}; }
918
922
else if constexpr (entries.size() < u32(u32{}-1u)) { return u32{}; }
919
923
else if constexpr (entries.size() < u64(u64{}-1u)) { return u64{}; }
924
+ #if defined(__SIZEOF_INT128__)
920
925
else if constexpr (entries.size() < u128(u128{}-1u)) { return u128{}; }
926
+ #endif
921
927
}());
922
928
923
929
utility::array<utility::compressed_pair<key_type, mapped_type>, entries.size()> entries_;
@@ -934,10 +940,12 @@ struct traits {
934
940
935
941
using key_type = decltype([] {
936
942
if constexpr (max_len <= sizeof(u8)) { return u8{}; }
937
- else if constexpr (max_len <= sizeof(u16)) { return u16{}; }
938
- else if constexpr (max_len <= sizeof(u32)) { return u32{}; }
939
- else if constexpr (max_len <= sizeof(u64)) { return u64{}; }
940
- else if constexpr (max_len <= sizeof(u128)) { return u128{}; }
943
+ else if constexpr (max_len <= sizeof(u16)) { return u16{}; }
944
+ else if constexpr (max_len <= sizeof(u32)) { return u32{}; }
945
+ else if constexpr (max_len <= sizeof(u64)) { return u64{}; }
946
+ #if defined(__SIZEOF_INT128__)
947
+ else if constexpr (max_len <= sizeof(u128)) { return u128{}; }
948
+ #endif
941
949
}());
942
950
using mapped_type = typename type_traits::value_type_t<entries>::second_type;
943
951
@@ -953,7 +961,9 @@ struct traits {
953
961
else if constexpr (entries.size() < u16(u16{}-1u)) { return u16{}; }
954
962
else if constexpr (entries.size() < u32(u32{}-1u)) { return u32{}; }
955
963
else if constexpr (entries.size() < u64(u64{}-1u)) { return u64{}; }
964
+ #if defined(__SIZEOF_INT128__)
956
965
else if constexpr (entries.size() < u128(u128{}-1u)) { return u128{}; }
966
+ #endif
957
967
}());
958
968
959
969
utility::array<utility::compressed_pair<key_type, mapped_type>, entries.size()> entries_;
0 commit comments