Commit 55de7357 by Dino Radakovic Committed by Copybara-Service

`absl`: Replace `absl::remove_cv_t<absl::remove_reference_t<T>>` with `absl::remove_cvref_t<T>`

PiperOrigin-RevId: 537372070
Change-Id: I46ff6e42856aea2cd8da6ff7105cf58613603dd4
parent e9bb35ce
...@@ -69,11 +69,8 @@ using IsConstructibleOrConvertibleOrAssignableFromStatusOr = ...@@ -69,11 +69,8 @@ using IsConstructibleOrConvertibleOrAssignableFromStatusOr =
template <typename T, typename U> template <typename T, typename U>
struct IsDirectInitializationAmbiguous struct IsDirectInitializationAmbiguous
: public absl::conditional_t< : public absl::conditional_t<
std::is_same<absl::remove_cv_t<absl::remove_reference_t<U>>, std::is_same<absl::remove_cvref_t<U>, U>::value, std::false_type,
U>::value, IsDirectInitializationAmbiguous<T, absl::remove_cvref_t<U>>> {};
std::false_type,
IsDirectInitializationAmbiguous<
T, absl::remove_cv_t<absl::remove_reference_t<U>>>> {};
template <typename T, typename V> template <typename T, typename V>
struct IsDirectInitializationAmbiguous<T, absl::StatusOr<V>> struct IsDirectInitializationAmbiguous<T, absl::StatusOr<V>>
...@@ -84,14 +81,11 @@ struct IsDirectInitializationAmbiguous<T, absl::StatusOr<V>> ...@@ -84,14 +81,11 @@ struct IsDirectInitializationAmbiguous<T, absl::StatusOr<V>>
template <typename T, typename U> template <typename T, typename U>
using IsDirectInitializationValid = absl::disjunction< using IsDirectInitializationValid = absl::disjunction<
// Short circuits if T is basically U. // Short circuits if T is basically U.
std::is_same<T, absl::remove_cv_t<absl::remove_reference_t<U>>>, std::is_same<T, absl::remove_cvref_t<U>>,
absl::negation<absl::disjunction< absl::negation<absl::disjunction<
std::is_same<absl::StatusOr<T>, std::is_same<absl::StatusOr<T>, absl::remove_cvref_t<U>>,
absl::remove_cv_t<absl::remove_reference_t<U>>>, std::is_same<absl::Status, absl::remove_cvref_t<U>>,
std::is_same<absl::Status, std::is_same<absl::in_place_t, absl::remove_cvref_t<U>>,
absl::remove_cv_t<absl::remove_reference_t<U>>>,
std::is_same<absl::in_place_t,
absl::remove_cv_t<absl::remove_reference_t<U>>>,
IsDirectInitializationAmbiguous<T, U>>>>; IsDirectInitializationAmbiguous<T, U>>>>;
// This trait detects whether `StatusOr<T>::operator=(U&&)` is ambiguous, which // This trait detects whether `StatusOr<T>::operator=(U&&)` is ambiguous, which
...@@ -107,11 +101,8 @@ using IsDirectInitializationValid = absl::disjunction< ...@@ -107,11 +101,8 @@ using IsDirectInitializationValid = absl::disjunction<
template <typename T, typename U> template <typename T, typename U>
struct IsForwardingAssignmentAmbiguous struct IsForwardingAssignmentAmbiguous
: public absl::conditional_t< : public absl::conditional_t<
std::is_same<absl::remove_cv_t<absl::remove_reference_t<U>>, std::is_same<absl::remove_cvref_t<U>, U>::value, std::false_type,
U>::value, IsForwardingAssignmentAmbiguous<T, absl::remove_cvref_t<U>>> {};
std::false_type,
IsForwardingAssignmentAmbiguous<
T, absl::remove_cv_t<absl::remove_reference_t<U>>>> {};
template <typename T, typename U> template <typename T, typename U>
struct IsForwardingAssignmentAmbiguous<T, absl::StatusOr<U>> struct IsForwardingAssignmentAmbiguous<T, absl::StatusOr<U>>
...@@ -122,14 +113,11 @@ struct IsForwardingAssignmentAmbiguous<T, absl::StatusOr<U>> ...@@ -122,14 +113,11 @@ struct IsForwardingAssignmentAmbiguous<T, absl::StatusOr<U>>
template <typename T, typename U> template <typename T, typename U>
using IsForwardingAssignmentValid = absl::disjunction< using IsForwardingAssignmentValid = absl::disjunction<
// Short circuits if T is basically U. // Short circuits if T is basically U.
std::is_same<T, absl::remove_cv_t<absl::remove_reference_t<U>>>, std::is_same<T, absl::remove_cvref_t<U>>,
absl::negation<absl::disjunction< absl::negation<absl::disjunction<
std::is_same<absl::StatusOr<T>, std::is_same<absl::StatusOr<T>, absl::remove_cvref_t<U>>,
absl::remove_cv_t<absl::remove_reference_t<U>>>, std::is_same<absl::Status, absl::remove_cvref_t<U>>,
std::is_same<absl::Status, std::is_same<absl::in_place_t, absl::remove_cvref_t<U>>,
absl::remove_cv_t<absl::remove_reference_t<U>>>,
std::is_same<absl::in_place_t,
absl::remove_cv_t<absl::remove_reference_t<U>>>,
IsForwardingAssignmentAmbiguous<T, U>>>>; IsForwardingAssignmentAmbiguous<T, U>>>>;
class Helper { class Helper {
......
...@@ -411,7 +411,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>, ...@@ -411,7 +411,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
typename = typename std::enable_if<absl::conjunction< typename = typename std::enable_if<absl::conjunction<
std::is_constructible<T, U&&>, std::is_assignable<T&, U&&>, std::is_constructible<T, U&&>, std::is_assignable<T&, U&&>,
absl::disjunction< absl::disjunction<
std::is_same<absl::remove_cv_t<absl::remove_reference_t<U>>, T>, std::is_same<absl::remove_cvref_t<U>, T>,
absl::conjunction< absl::conjunction<
absl::negation<std::is_convertible<U&&, absl::Status>>, absl::negation<std::is_convertible<U&&, absl::Status>>,
absl::negation<internal_statusor:: absl::negation<internal_statusor::
...@@ -444,8 +444,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>, ...@@ -444,8 +444,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
internal_statusor::IsDirectInitializationValid<T, U&&>, internal_statusor::IsDirectInitializationValid<T, U&&>,
std::is_constructible<T, U&&>, std::is_convertible<U&&, T>, std::is_constructible<T, U&&>, std::is_convertible<U&&, T>,
absl::disjunction< absl::disjunction<
std::is_same<absl::remove_cv_t<absl::remove_reference_t<U>>, std::is_same<absl::remove_cvref_t<U>, T>,
T>,
absl::conjunction< absl::conjunction<
absl::negation<std::is_convertible<U&&, absl::Status>>, absl::negation<std::is_convertible<U&&, absl::Status>>,
absl::negation< absl::negation<
...@@ -461,8 +460,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>, ...@@ -461,8 +460,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
absl::conjunction< absl::conjunction<
internal_statusor::IsDirectInitializationValid<T, U&&>, internal_statusor::IsDirectInitializationValid<T, U&&>,
absl::disjunction< absl::disjunction<
std::is_same<absl::remove_cv_t<absl::remove_reference_t<U>>, std::is_same<absl::remove_cvref_t<U>, T>,
T>,
absl::conjunction< absl::conjunction<
absl::negation<std::is_constructible<absl::Status, U&&>>, absl::negation<std::is_constructible<absl::Status, U&&>>,
absl::negation< absl::negation<
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment