Make base::is_instantiation a type constraint.
Putting the type to test first allows it to be used in requires
expressions as a type constraint, e.g.
requires requires (T t) {
{ t.GetVector() } -> base::is_instantiation<std::vector>;
}
Change-Id: I5c0b941990a5b4e529dd088ccae95afdd2e7cf16
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6640763
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Owners-Override: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1473345}
NOKEYCHECK=True
GitOrigin-RevId: fb999fd3267ace0f7ad7330db09fc188634cb213
diff --git a/public/cpp/bindings/array_data_view.h b/public/cpp/bindings/array_data_view.h
index 5b022afd..718259e 100644
--- a/public/cpp/bindings/array_data_view.h
+++ b/public/cpp/bindings/array_data_view.h
@@ -70,7 +70,7 @@
};
template <typename T>
- requires(!base::is_instantiation<std::optional, T>)
+ requires(!base::is_instantiation<T, std::optional>)
class ArrayDataViewImpl<
T,
typename std::enable_if<
@@ -103,7 +103,7 @@
};
template <typename T>
- requires(base::is_instantiation<std::optional, T>)
+ requires(base::is_instantiation<T, std::optional>)
class ArrayDataViewImpl<
T,
typename std::enable_if<
diff --git a/public/cpp/bindings/lib/array_internal.h b/public/cpp/bindings/lib/array_internal.h
index f5f804b..9c73510 100644
--- a/public/cpp/bindings/lib/array_internal.h
+++ b/public/cpp/bindings/lib/array_internal.h
@@ -194,7 +194,7 @@
// TODO(ffred): consider merging with the optional<bool> specialization using
// if constexpr.
template <typename T>
- requires(base::is_instantiation<std::optional, T>)
+ requires(base::is_instantiation<T, std::optional>)
struct ArrayDataTraits<T> {
using StorageType = typename T::value_type;
diff --git a/public/cpp/bindings/lib/array_serialization.h b/public/cpp/bindings/lib/array_serialization.h
index fd26ce9..0f0be5d 100644
--- a/public/cpp/bindings/lib/array_serialization.h
+++ b/public/cpp/bindings/lib/array_serialization.h
@@ -163,7 +163,7 @@
template <typename MojomType,
typename MaybeConstUserType,
typename UserTypeIterator>
- requires(!base::is_instantiation<std::optional, typename MojomType::Element>)
+ requires(!base::is_instantiation<typename MojomType::Element, std::optional>)
struct ArraySerializer<
MojomType,
MaybeConstUserType,
@@ -212,7 +212,7 @@
template <typename MojomType,
typename MaybeConstUserType,
typename UserTypeIterator>
- requires(base::is_instantiation<std::optional, typename MojomType::Element>)
+ requires(base::is_instantiation<typename MojomType::Element, std::optional>)
struct ArraySerializer<
MojomType,
MaybeConstUserType,
diff --git a/public/cpp/bindings/lib/array_serialization_send_validation.h b/public/cpp/bindings/lib/array_serialization_send_validation.h
index dbe9943..17b23c5 100644
--- a/public/cpp/bindings/lib/array_serialization_send_validation.h
+++ b/public/cpp/bindings/lib/array_serialization_send_validation.h
@@ -74,7 +74,7 @@
typename MaybeConstUserType,
SendValidation send_validation,
typename UserTypeIterator>
- requires(!base::is_instantiation<std::optional, typename MojomType::Element>)
+ requires(!base::is_instantiation<typename MojomType::Element, std::optional>)
struct SendValidationArraySerializer<
MojomType,
MaybeConstUserType,
@@ -121,7 +121,7 @@
typename MaybeConstUserType,
SendValidation send_validation,
typename UserTypeIterator>
- requires(base::is_instantiation<std::optional, typename MojomType::Element>)
+ requires(base::is_instantiation<typename MojomType::Element, std::optional>)
struct SendValidationArraySerializer<
MojomType,
MaybeConstUserType,