diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-09-03 12:30:50 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-09-03 12:42:57 +0300 |
commit | 3da5a68ec3c329240e89bd0ed8c1c39e4359a693 (patch) | |
tree | ddde18bdffca562c82d38999ff77f5ee6be185e9 | |
parent | a8b88523909e5ff941fbccbc1fcaabc0d91fffdb (diff) | |
download | ydb-3da5a68ec3c329240e89bd0ed8c1c39e4359a693.tar.gz |
Intermediate changes
-rw-r--r-- | util/generic/string_transparent_hash_ut.cpp | 20 | ||||
-rw-r--r-- | util/generic/ut/ya.make | 15 |
2 files changed, 20 insertions, 15 deletions
diff --git a/util/generic/string_transparent_hash_ut.cpp b/util/generic/string_transparent_hash_ut.cpp index b87fa2843e..a03fc7e6d7 100644 --- a/util/generic/string_transparent_hash_ut.cpp +++ b/util/generic/string_transparent_hash_ut.cpp @@ -3,15 +3,27 @@ #include "strbuf.h" #include <library/cpp/testing/unittest/registar.h> -#include <library/cpp/containers/absl_flat_hash/flat_hash_set.h> #include <util/str_stl.h> +#ifdef __cpp_lib_generic_unordered_lookup + #include <unordered_set> + +template <class T, class THasher, class TPred> +using THashSetType = std::unordered_set<T, THasher, TPred>; +#else + // Using Abseil hash set because `std::unordered_set` is transparent only from libstdc++11. + // Meanwhile clang-linux-x86_64-release-stl-system autocheck sets OS_SDK=ubuntu-20, + // that support libstdc++10 by default. + #include <library/cpp/containers/absl_flat_hash/flat_hash_set.h> + +template <class T, class THasher, class TPred> +using THashSetType = absl::flat_hash_set<T, THasher, TPred>; +#endif + Y_UNIT_TEST_SUITE(StringHashFunctorTests) { Y_UNIT_TEST(TestTransparencyWithUnorderedSet) { - // Using Abseil hash set because `std::unordered_set` is transparent only from C++20 (while - // we stuck with C++17 right now). - absl::flat_hash_set<TString, THash<TString>, TEqualTo<TString>> s = {"foo"}; + THashSetType<TString, THash<TString>, TEqualTo<TString>> s = {"foo"}; // If either `THash` or `TEqualTo` is not transparent compilation will fail. UNIT_ASSERT_UNEQUAL(s.find(TStringBuf("foo")), s.end()); UNIT_ASSERT_EQUAL(s.find(TStringBuf("bar")), s.end()); diff --git a/util/generic/ut/ya.make b/util/generic/ut/ya.make index 35bdb72bd4..38978e129d 100644 --- a/util/generic/ut/ya.make +++ b/util/generic/ut/ya.make @@ -41,6 +41,7 @@ SRCS( generic/stack_ut.cpp generic/store_policy_ut.cpp generic/strbuf_ut.cpp + generic/string_transparent_hash_ut.cpp generic/string_ut.cpp generic/typelist_ut.cpp generic/typetraits_ut.cpp @@ -56,16 +57,8 @@ SRCS( INCLUDE(${ARCADIA_ROOT}/util/tests/ya_util_tests.inc) -IF (NOT OS_IOS AND NOT ARCH_PPC64LE) - # Abseil fails to build (with linkage error) on ios and with compilation error on PowerPC - # (somewhere in unscaledcycleclock.cc). - PEERDIR( - library/cpp/containers/absl_flat_hash - ) - - SRCS( - generic/string_transparent_hash_ut.cpp - ) -ENDIF() +PEERDIR( + library/cpp/containers/absl_flat_hash +) END() |