diff options
author | Derek Mauro <dmauro@google.com> | 2023-11-16 07:25:40 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-11-16 07:26:24 -0800 |
commit | 524ebb7ea91d2955dc4c68c7e6fd2bed620621b5 (patch) | |
tree | 05a8dd00057421cad8f53b7307da41a29b784bd5 /absl/hash | |
parent | 3bd86026c93da5a40006fd53403dff9d5f5e30e3 (diff) |
Rollback providing AbslHashValue for std::filesystem::path in C++17
'path' is unavailable: introduced in iOS 13.0
PiperOrigin-RevId: 583036562
Change-Id: I5aea530d03c3317896c3c15bcf7cb5f9d8bc466a
Diffstat (limited to 'absl/hash')
-rw-r--r-- | absl/hash/hash_test.cc | 41 | ||||
-rw-r--r-- | absl/hash/internal/hash.h | 22 |
2 files changed, 0 insertions, 63 deletions
diff --git a/absl/hash/hash_test.cc b/absl/hash/hash_test.cc index 71874061..111f375b 100644 --- a/absl/hash/hash_test.cc +++ b/absl/hash/hash_test.cc @@ -48,10 +48,6 @@ #include "absl/types/optional.h" #include "absl/types/variant.h" -#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L -#include <filesystem> // NOLINT -#endif - #ifdef ABSL_HAVE_STD_STRING_VIEW #include <string_view> #endif @@ -484,43 +480,6 @@ TEST(HashValueTest, U32StringView) { #endif } -TEST(HashValueTest, StdFilesystemPath) { -#if ABSL_INTERNAL_CPLUSPLUS_LANG < 201703L - GTEST_SKIP() << "std::filesystem::path requires C++17"; -#else - EXPECT_TRUE((is_hashable<std::filesystem::path>::value)); - - // clang-format off - const auto kTestCases = std::make_tuple( - std::filesystem::path(), - std::filesystem::path("/"), -#ifndef __GLIBCXX__ - // libstdc++ has a known issue normalizing "//". - // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106452 - std::filesystem::path("//"), -#endif - std::filesystem::path("/a/b"), - std::filesystem::path("/a//b"), - std::filesystem::path("a/b"), - std::filesystem::path("a/b/"), - std::filesystem::path("a//b"), - std::filesystem::path("a//b/"), - std::filesystem::path("c:/"), - std::filesystem::path("c:\\"), - std::filesystem::path("c:\\/"), - std::filesystem::path("c:\\//"), - std::filesystem::path("c://"), - std::filesystem::path("c://\\"), - std::filesystem::path("/e/p"), - std::filesystem::path("/s/../e/p"), - std::filesystem::path("e/p"), - std::filesystem::path("s/../e/p")); - // clang-format on - - EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(kTestCases)); -#endif -} - TEST(HashValueTest, StdArray) { EXPECT_TRUE((is_hashable<std::array<int, 3>>::value)); diff --git a/absl/hash/internal/hash.h b/absl/hash/internal/hash.h index 003f3dde..e97cb315 100644 --- a/absl/hash/internal/hash.h +++ b/absl/hash/internal/hash.h @@ -56,10 +56,6 @@ #include "absl/types/variant.h" #include "absl/utility/utility.h" -#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L -#include <filesystem> // NOLINT -#endif - #ifdef ABSL_HAVE_STD_STRING_VIEW #include <string_view> #endif @@ -582,24 +578,6 @@ H AbslHashValue(H hash_state, std::basic_string_view<Char> str) { #endif // ABSL_HAVE_STD_STRING_VIEW -#if defined(__cpp_lib_filesystem) && __cpp_lib_filesystem >= 201703L - -// Support std::filesystem::path. The SFINAE is required because some string -// types are implicitly convertible to std::filesystem::path. -template <typename Path, typename H, - typename = absl::enable_if_t< - std::is_same_v<Path, std::filesystem::path>>> -H AbslHashValue(H hash_state, const Path& path) { - // This is implemented by deferring to the standard library to compute the - // hash. The standard library requires that for two paths, `p1 == p2`, then - // `hash_value(p1) == hash_value(p2)`. `AbslHashValue` has the same - // requirement. Since `operator==` does platform specific matching, deferring - // to the standard library is the simplest approach. - return H::combine(std::move(hash_state), std::filesystem::hash_value(path)); -} - -#endif // defined(__cpp_lib_filesystem) && __cpp_lib_filesystem >= 201703L - // ----------------------------------------------------------------------------- // AbslHashValue for Sequence Containers // ----------------------------------------------------------------------------- |