summaryrefslogtreecommitdiff
path: root/absl/types
diff options
context:
space:
mode:
Diffstat (limited to 'absl/types')
-rw-r--r--absl/types/BUILD.bazel1
-rw-r--r--absl/types/CMakeLists.txt1
-rw-r--r--absl/types/any.h25
3 files changed, 5 insertions, 22 deletions
diff --git a/absl/types/BUILD.bazel b/absl/types/BUILD.bazel
index f2ea9f39..c64417cc 100644
--- a/absl/types/BUILD.bazel
+++ b/absl/types/BUILD.bazel
@@ -35,6 +35,7 @@ cc_library(
":bad_any_cast",
"//absl/base:config",
"//absl/base:core_headers",
+ "//absl/base:fast_type_id",
"//absl/meta:type_traits",
"//absl/utility",
],
diff --git a/absl/types/CMakeLists.txt b/absl/types/CMakeLists.txt
index c7c88250..1b4d453b 100644
--- a/absl/types/CMakeLists.txt
+++ b/absl/types/CMakeLists.txt
@@ -24,6 +24,7 @@ absl_cc_library(
absl::bad_any_cast
absl::config
absl::core_headers
+ absl::fast_type_id
absl::type_traits
absl::utility
PUBLIC
diff --git a/absl/types/any.h b/absl/types/any.h
index 16bda79c..7eed5197 100644
--- a/absl/types/any.h
+++ b/absl/types/any.h
@@ -80,6 +80,7 @@ ABSL_NAMESPACE_END
#include <typeinfo>
#include <utility>
+#include "absl/base/internal/fast_type_id.h"
#include "absl/base/macros.h"
#include "absl/meta/type_traits.h"
#include "absl/types/bad_any_cast.h"
@@ -95,26 +96,6 @@ ABSL_NAMESPACE_END
namespace absl {
ABSL_NAMESPACE_BEGIN
-namespace any_internal {
-
-template <typename Type>
-struct TypeTag {
- constexpr static char dummy_var = 0;
-};
-
-template <typename Type>
-constexpr char TypeTag<Type>::dummy_var;
-
-// FastTypeId<Type>() evaluates at compile/link-time to a unique pointer for the
-// passed in type. These are meant to be good match for keys into maps or
-// straight up comparisons.
-template<typename Type>
-constexpr inline const void* FastTypeId() {
- return &TypeTag<Type>::dummy_var;
-}
-
-} // namespace any_internal
-
class any;
// swap()
@@ -423,11 +404,11 @@ class any {
using NormalizedType =
typename std::remove_cv<typename std::remove_reference<T>::type>::type;
- return any_internal::FastTypeId<NormalizedType>();
+ return base_internal::FastTypeId<NormalizedType>();
}
const void* GetObjTypeId() const {
- return obj_ ? obj_->ObjTypeId() : any_internal::FastTypeId<void>();
+ return obj_ ? obj_->ObjTypeId() : base_internal::FastTypeId<void>();
}
// `absl::any` nonmember functions //