Go to the documentation of this file.
40 #ifndef ABSL_UTILITY_UTILITY_H_
41 #define ABSL_UTILITY_UTILITY_H_
48 #include "absl/base/config.h"
49 #include "absl/base/internal/inline_variable.h"
50 #include "absl/base/internal/invoke.h"
51 #include "absl/meta/type_traits.h"
75 template <
typename T,
T... Ints>
78 static constexpr
size_t size() noexcept {
return sizeof...(Ints); }
86 template <
size_t... Ints>
89 namespace utility_internal {
91 template <
typename Seq,
size_t SeqSize,
size_t Rem>
95 template <
typename T,
T... Ints,
size_t SeqSize>
100 template <
typename T,
T... Ints,
size_t SeqSize>
107 template <
typename T,
size_t N>
113 template <
typename T>
118 template <
typename T>
141 template <
typename T, T N>
157 template <
typename... Ts>
162 #ifdef ABSL_USES_STD_OPTIONAL
164 using std::in_place_t;
167 #else // ABSL_USES_STD_OPTIONAL
178 #endif // ABSL_USES_STD_OPTIONAL
180 #if defined(ABSL_USES_STD_ANY) || defined(ABSL_USES_STD_VARIANT)
190 template <
typename T>
193 template <
typename T>
195 #endif // ABSL_USES_STD_ANY || ABSL_USES_STD_VARIANT
197 #ifdef ABSL_USES_STD_VARIANT
212 #endif // ABSL_USES_STD_VARIANT
220 template <
typename T>
229 template <
typename T>
232 return static_cast<T&&
>(t);
235 namespace utility_internal {
237 template <
typename Functor,
typename Tuple, std::size_t... Indexes>
240 absl::forward<Functor>(functor),
241 std::get<Indexes>(absl::forward<Tuple>(t))...)) {
243 absl::forward<Functor>(functor),
244 std::get<Indexes>(absl::forward<Tuple>(t))...);
288 template <
typename Functor,
typename Tuple>
289 auto apply(Functor&& functor, Tuple&& t)
291 absl::forward<Functor>(functor), absl::forward<Tuple>(t),
295 absl::forward<Functor>(functor), absl::forward<Tuple>(t),
313 template <
typename T,
typename U = T>
316 obj = absl::forward<U>(new_value);
320 namespace utility_internal {
321 template <
typename T,
typename Tuple,
size_t...
I>
323 return T(std::get<I>(std::forward<Tuple>(tup))...);
339 template <
typename T,
typename Tuple>
341 return utility_internal::make_from_tuple_impl<T>(
342 std::forward<Tuple>(tup),
350 #endif // ABSL_UTILITY_UTILITY_H_
typename std::decay< T >::type decay_t
void(*)(utility_internal::InPlaceIndexTag< I >) in_place_index_t
OPENSSL_EXPORT const ASN1_OBJECT * obj
void(*)(utility_internal::InPlaceTypeTag< T >) in_place_type_t
auto apply_helper(Functor &&functor, Tuple &&t, index_sequence< Indexes... >) -> decltype(absl::base_internal::invoke(absl::forward< Functor >(functor), std::get< Indexes >(absl::forward< Tuple >(t))...))
T make_from_tuple_impl(Tuple &&tup, absl::index_sequence< I... >)
ABSL_NAMESPACE_BEGIN ABSL_INTERNAL_INLINE_CONSTEXPR(IntervalClosedClosedTag, IntervalClosedClosed, {})
#define ABSL_NAMESPACE_END
#define T(upbtypeconst, upbtype, ctype, default_value)
typename utility_internal::Gen< T, N >::type make_integer_sequence
#define ABSL_NAMESPACE_BEGIN
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
constexpr T make_from_tuple(Tuple &&tup)
InPlaceIndexTag & operator=(const InPlaceIndexTag &)=delete
make_integer_sequence< size_t, N > make_index_sequence
static constexpr size_t size() noexcept
typename Extend< typename Gen< T, N/2 >::type, N/2, N % 2 >::type type
make_index_sequence< sizeof...(Ts)> index_sequence_for
void in_place_type(utility_internal::InPlaceTypeTag< T >)
InPlaceTypeTag & operator=(const InPlaceTypeTag &)=delete
void in_place_index(utility_internal::InPlaceIndexTag< I >)
constexpr T && forward(absl::remove_reference_t< T > &t) noexcept
typename std::remove_reference< T >::type remove_reference_t
auto apply(Functor &&functor, Tuple &&t) -> decltype(utility_internal::apply_helper(absl::forward< Functor >(functor), absl::forward< Tuple >(t), absl::make_index_sequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >
T exchange(T &obj, U &&new_value)
invoke_result_t< F, Args... > invoke(F &&f, Args &&... args)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:49