Deprecate and inline historical functions in Abseil Migrates uses of absl:: symbols to std:: symbols PiperOrigin-RevId: 914475818 Change-Id: I35908b9d91b4fba465b9fe3e5b2c8f497f2f192b
diff --git a/absl/algorithm/BUILD.bazel b/absl/algorithm/BUILD.bazel index 7d8350c..b56ba66 100644 --- a/absl/algorithm/BUILD.bazel +++ b/absl/algorithm/BUILD.bazel
@@ -41,6 +41,7 @@ linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ "//absl/base:config", + "//absl/base:core_headers", ], )
diff --git a/absl/algorithm/CMakeLists.txt b/absl/algorithm/CMakeLists.txt index cdd5d14..2fb484d 100644 --- a/absl/algorithm/CMakeLists.txt +++ b/absl/algorithm/CMakeLists.txt
@@ -23,6 +23,7 @@ ${ABSL_DEFAULT_COPTS} DEPS absl::config + absl::core_headers PUBLIC )
diff --git a/absl/algorithm/algorithm.h b/absl/algorithm/algorithm.h index 48f5950..4e2ebf4 100644 --- a/absl/algorithm/algorithm.h +++ b/absl/algorithm/algorithm.h
@@ -27,6 +27,7 @@ #include <type_traits> #include "absl/base/config.h" +#include "absl/base/macros.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -40,8 +41,39 @@ // // See the documentation for the STL <algorithm> header for more information: // https://en.cppreference.com/w/cpp/header/algorithm -using std::equal; -using std::rotate; + +template <class InputIt1, class InputIt2> +ABSL_DEPRECATE_AND_INLINE() +constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2) { + return std::equal(first1, last1, first2); +} + +template <class InputIt1, class InputIt2, class BinaryPredicate> +ABSL_DEPRECATE_AND_INLINE() +constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, + BinaryPredicate p) { + return std::equal(first1, last1, first2, p); +} + +template <class InputIt1, class InputIt2> +ABSL_DEPRECATE_AND_INLINE() +constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, + InputIt2 last2) { + return std::equal(first1, last1, first2, last2); +} + +template <class InputIt1, class InputIt2, class BinaryPredicate> +ABSL_DEPRECATE_AND_INLINE() +constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, + InputIt2 last2, BinaryPredicate p) { + return std::equal(first1, last1, first2, last2, p); +} + +template <class ForwardIt> +ABSL_DEPRECATE_AND_INLINE() +constexpr ForwardIt rotate(ForwardIt first, ForwardIt n_first, ForwardIt last) { + return std::rotate(first, n_first, last); +} // linear_search() //
diff --git a/absl/container/internal/hashtablez_sampler.cc b/absl/container/internal/hashtablez_sampler.cc index 18c8ca4..c761304 100644 --- a/absl/container/internal/hashtablez_sampler.cc +++ b/absl/container/internal/hashtablez_sampler.cc
@@ -22,6 +22,7 @@ #include <cstdint> #include <functional> #include <limits> +#include <utility> #include "absl/base/attributes.h" #include "absl/base/config.h" @@ -147,7 +148,7 @@ size_t value_size, uint16_t soo_capacity) { if (ABSL_PREDICT_FALSE(ShouldForceSampling())) { next_sample.next_sample = 1; - const int64_t old_stride = exchange(next_sample.sample_stride, 1); + const int64_t old_stride = std::exchange(next_sample.sample_stride, 1); HashtablezInfo* result = GlobalHashtablezSampler().Register( old_stride, inline_element_size, key_size, value_size, soo_capacity); return result;
diff --git a/absl/types/any.h b/absl/types/any.h index 9026b1b..accb025 100644 --- a/absl/types/any.h +++ b/absl/types/any.h
@@ -25,6 +25,7 @@ #define ABSL_TYPES_ANY_H_ #include <any> // IWYU pragma: export +#include <initializer_list> #include "absl/base/config.h" @@ -35,10 +36,30 @@ namespace absl { ABSL_NAMESPACE_BEGIN + using any ABSL_DEPRECATE_AND_INLINE() = std::any; -using std::any_cast; + +template <typename T, typename... Args> +[[deprecated]] constexpr decltype(std::any_cast<T>(std::declval<Args>()...)) +any_cast(Args&&... args) { + return std::any_cast<T>(std::forward<Args>(args)...); +} + using bad_any_cast ABSL_DEPRECATE_AND_INLINE() = std::bad_any_cast; -using std::make_any; + +template <typename T, typename... Args> +[[deprecated]] constexpr decltype(std::make_any<T>(std::declval<Args>()...)) +make_any(Args&&... args) { + return std::make_any<T>(std::forward<Args>(args)...); +} + +template <typename T, typename U, typename... Args> +[[deprecated]] constexpr decltype(std::make_any<T>( + std::declval<std::initializer_list<U>>(), std::declval<Args>()...)) +make_any(std::initializer_list<U> il, Args&&... args) { + return std::make_any<T>(il, std::forward<Args>(args)...); +} + ABSL_NAMESPACE_END } // namespace absl
diff --git a/absl/types/variant.h b/absl/types/variant.h index fd90c63..49f3e24 100644 --- a/absl/types/variant.h +++ b/absl/types/variant.h
@@ -37,9 +37,36 @@ using bad_variant_access ABSL_REFACTOR_INLINE = std::bad_variant_access; -using std::get; -using std::get_if; -using std::holds_alternative; +template <size_t I, typename... Args> +[[deprecated]] constexpr auto get(Args&&... args) + -> decltype(std::get<I>(std::forward<Args>(args)...)) { + return std::get<I>(std::forward<Args>(args)...); +} + +template <typename T, typename... Args> +[[deprecated]] constexpr decltype(std::get<T>(std::declval<Args>()...)) get( + Args&&... args) { + return std::get<T>(std::forward<Args>(args)...); +} + +template <size_t I, typename... Args> +[[deprecated]] constexpr decltype(std::get_if<I>(std::declval<Args>()...)) +get_if(Args&&... args) { + return std::get_if<I>(std::forward<Args>(args)...); +} + +template <typename T, typename... Args> +[[deprecated]] constexpr decltype(std::get_if<T>(std::declval<Args>()...)) +get_if(Args&&... args) { + return std::get_if<T>(std::forward<Args>(args)...); +} + +template <typename T, typename... Args> +[[deprecated]] constexpr decltype(std::holds_alternative<T>( + std::declval<Args>()...)) +holds_alternative(Args&&... args) { + return std::holds_alternative<T>(std::forward<Args>(args)...); +} using monostate ABSL_REFACTOR_INLINE = std::monostate; @@ -67,7 +94,11 @@ inline constexpr size_t variant_size_v ABSL_REFACTOR_INLINE = std::variant_size_v<T>; -using std::visit; +template <typename... Args> +[[deprecated]] constexpr decltype(std::visit(std::declval<Args>()...)) visit( + Args&&... args) { + return std::visit(std::forward<Args>(args)...); +} namespace variant_internal { // Helper visitor for converting a variant<Ts...>` into another type (mostly
diff --git a/absl/utility/utility.h b/absl/utility/utility.h index 4dbc01c..c52c35d 100644 --- a/absl/utility/utility.h +++ b/absl/utility/utility.h
@@ -18,8 +18,10 @@ #include <cstddef> #include <cstdlib> #include <tuple> +#include <type_traits> #include <utility> +#include "absl/base/attributes.h" #include "absl/base/config.h" #include "absl/base/macros.h" @@ -36,8 +38,27 @@ // platforms are no longer supported. New code should simply use the // the ones from std directly. using std::apply; -using std::exchange; -using std::forward; + +template <class T1, class T2 = T1> +ABSL_DEPRECATE_AND_INLINE() +constexpr T1 exchange(T1& obj, T2&& new_value) noexcept( + noexcept(std::exchange(std::declval<T1&>(), std::declval<T2>()))) { + return std::exchange(obj, std::forward<T2>(new_value)); +} + +template <class T> +[[deprecated("Use std::forward instead.")]] [[nodiscard]] constexpr T&& forward( + std::remove_reference_t<T>& arg ABSL_ATTRIBUTE_LIFETIME_BOUND) noexcept { + // NOLINTNEXTLINE: Avoid warnings about T not being the spelled type of arg. + return std::forward<T>(arg); +} + +template <class T> +[[deprecated("Use std::forward instead.")]] [[nodiscard]] constexpr T&& forward( + std::remove_reference_t<T>&& arg ABSL_ATTRIBUTE_LIFETIME_BOUND) noexcept { + // NOLINTNEXTLINE: Avoid warnings about T not being the spelled type of arg. + return std::forward<T>(arg); +} inline constexpr const std::in_place_t& in_place ABSL_DEPRECATE_AND_INLINE() = std::in_place; @@ -69,7 +90,13 @@ using index_sequence_for ABSL_DEPRECATE_AND_INLINE() = std::index_sequence_for<T...>; -using std::make_from_tuple; +template <class T, class Tuple> +ABSL_DEPRECATE_AND_INLINE() +[[nodiscard]] constexpr decltype(std::make_from_tuple<T>(std::declval<Tuple>())) + make_from_tuple(Tuple&& arg) noexcept( + noexcept(std::make_from_tuple<T>(std::declval<Tuple>()))) { + return std::make_from_tuple<T>(std::forward<Tuple>(arg)); +} template <size_t N> using make_index_sequence ABSL_DEPRECATE_AND_INLINE() =