Export of internal Abseil changes.
-- 5dc8d7504b7c11710b19365a6582c288c8992366 by Derek Mauro <dmauro@google.com>: Fix constexpr Span::last under MSVC and add Span constexpr tests. PiperOrigin-RevId: 237515952 -- 5ea8c146e653bbc49ff7e698699478242df7de35 by Derek Mauro <dmauro@google.com>: Implement Span::first and Span::last from C++20. https://github.com/abseil/abseil-cpp/pull/274 PiperOrigin-RevId: 237494399 -- 08db3417f1d8fe4556255d57a2f0df51b09bdd9a by Derek Mauro <dmauro@google.com>: HTTPS in more URLs. PiperOrigin-RevId: 237486823 -- 83ec63a7f8e47b62af619546f9f7b3bf72e74e86 by Derek Mauro <dmauro@google.com>: Changed HTTP URLs to HTTPS where possible. https://github.com/abseil/abseil-cpp/pull/270 PiperOrigin-RevId: 237445310 -- 220bf279c14cb31efa239500d1a70e0ac0c32e3c by Abseil Team <absl-team@google.com>: Support parsing decltype(nullptr) as a type. PiperOrigin-RevId: 237336739 -- ced234bbe78f5d495c3f6f6a9c2e0a95f7c080a5 by Gennadiy Rozental <rogeeff@google.com>: Introduce internal interface for setting environment variable value in scope PiperOrigin-RevId: 237275806 -- 1f1acb4e294af24d9f7598e85163d5e1d9958ae9 by Samuel Benzaquen <sbenza@google.com>: Avoid using aliases in the SFINAE expressions to make it more compatible with MSVC. Turn on the tests in MSVC. PiperOrigin-RevId: 237261456 -- 06cf7de6250a0572ef90fa1176f742ca0451ce71 by Derek Mauro <dmauro@google.com>: Fix unused variable warning. PiperOrigin-RevId: 237108006 GitOrigin-RevId: 5dc8d7504b7c11710b19365a6582c288c8992366 Change-Id: Ife5182c80942945c4e8700844c8febb482d6ad82
This commit is contained in:
parent
c1cecb25a9
commit
88a152ae74
17 changed files with 371 additions and 141 deletions
|
|
@ -165,9 +165,6 @@ TEST(HashValueTest, PointerAlignment) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO(EricWF): MSVC 15 has a bug that causes it to incorrectly evaluate the
|
||||
// SFINAE in internal/hash.h, causing this test to fail.
|
||||
#if !defined(_MSC_VER)
|
||||
TEST(HashValueTest, PairAndTuple) {
|
||||
EXPECT_TRUE((is_hashable<std::pair<int, int>>::value));
|
||||
EXPECT_TRUE((is_hashable<std::pair<const int&, const int&>>::value));
|
||||
|
|
@ -196,7 +193,6 @@ TEST(HashValueTest, PairAndTuple) {
|
|||
std::forward_as_tuple(42, 0, 0), std::forward_as_tuple(3, 9, 9),
|
||||
std::forward_as_tuple(0, 0, -42))));
|
||||
}
|
||||
#endif // !defined(_MSC_VER)
|
||||
|
||||
TEST(HashValueTest, CombineContiguousWorks) {
|
||||
std::vector<std::tuple<int>> v1 = {std::make_tuple(1), std::make_tuple(3)};
|
||||
|
|
@ -304,16 +300,12 @@ TEST(HashValueTest, Strings) {
|
|||
SpyHash(absl::string_view("ABC")));
|
||||
}
|
||||
|
||||
// TODO(EricWF): MSVC 15 has a bug that causes it to incorrectly evaluate the
|
||||
// SFINAE in internal/hash.h, causing this test to fail.
|
||||
#if !defined(_MSC_VER)
|
||||
TEST(HashValueTest, StdArray) {
|
||||
EXPECT_TRUE((is_hashable<std::array<int, 3>>::value));
|
||||
|
||||
EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(
|
||||
std::make_tuple(std::array<int, 3>{}, std::array<int, 3>{{0, 23, 42}})));
|
||||
}
|
||||
#endif // !defined(_MSC_VER)
|
||||
|
||||
TEST(HashValueTest, StdBitset) {
|
||||
EXPECT_TRUE((is_hashable<std::bitset<257>>::value));
|
||||
|
|
@ -414,9 +406,6 @@ TEST(HashValueTest, Variant) {
|
|||
#endif
|
||||
}
|
||||
|
||||
// TODO(EricWF): MSVC 15 has a bug that causes it to incorrectly evaluate the
|
||||
// SFINAE in internal/hash.h, causing this test to fail.
|
||||
#if !defined(_MSC_VER)
|
||||
TEST(HashValueTest, Maps) {
|
||||
EXPECT_TRUE((is_hashable<std::map<int, std::string>>::value));
|
||||
|
||||
|
|
@ -433,7 +422,6 @@ TEST(HashValueTest, Maps) {
|
|||
MM{{0, "foo"}, {42, "bar"}}, MM{{1, "foo"}, {42, "bar"}},
|
||||
MM{{1, "foo"}, {1, "foo"}, {43, "bar"}}, MM{{1, "foo"}, {43, "baz"}})));
|
||||
}
|
||||
#endif // !defined(_MSC_VER)
|
||||
|
||||
template <typename T, typename = void>
|
||||
struct IsHashCallble : std::false_type {};
|
||||
|
|
@ -511,8 +499,16 @@ struct CombineVariadic {
|
|||
Int(4));
|
||||
}
|
||||
};
|
||||
enum class InvokeTag {
|
||||
kUniquelyRepresented,
|
||||
kHashValue,
|
||||
#if ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_
|
||||
kLegacyHash,
|
||||
#endif // ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_
|
||||
kStdHash,
|
||||
kNone
|
||||
};
|
||||
|
||||
using InvokeTag = absl::hash_internal::InvokeHashTag;
|
||||
template <InvokeTag T>
|
||||
using InvokeTagConstant = std::integral_constant<InvokeTag, T>;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue