33 : wrapped_opt_array_ref(other) {}
36 : wrapped_opt_array_ref(other) {}
39 : wrapped_opt_array_ref(
value) {}
45 !std::is_same<std::decay_t<U>, in_place_t>
::value &&
46 std::is_constructible<ArrayRef<T>, U&&>
::value &&
47 std::is_convertible<U&&, ArrayRef<T>>
::value &&
48 !std::is_convertible<U&&, T>::value,
51 std::is_nothrow_constructible<ArrayRef<T>, U&&>
::value)
52 : wrapped_opt_array_ref(
value) {}
58 !std::is_same<std::decay_t<U>, in_place_t>
::value &&
59 std::is_constructible<ArrayRef<T>, U&&>
::value &&
60 !std::is_convertible<U&&, ArrayRef<T>>
::value,
63 std::is_nothrow_constructible<ArrayRef<T>, U&&>
::value)
64 : wrapped_opt_array_ref(
value) {}
66 template <
typename... Args>
68 : wrapped_opt_array_ref(ip, args...) {}
70 template <
typename U,
typename... Args>
73 std::initializer_list<U> il,
75 : wrapped_opt_array_ref(ip, il, args...) {}
78 : wrapped_opt_array_ref(
ArrayRef<T>(Vec)) {}
97 wrapped_opt_array_ref = other;
103 wrapped_opt_array_ref = other;
107 template <
typename U = ArrayRef<T>>
108 constexpr std::enable_if_t<
110 std::is_constructible<ArrayRef<T>, U&&>
::value &&
111 std::is_assignable<ArrayRef<T>&, U&&>
::value,
114 std::is_nothrow_constructible<ArrayRef<T>, U&&>
::value&&
115 std::is_nothrow_assignable<ArrayRef<T>&, U&&>
::value) {
116 wrapped_opt_array_ref =
value;
123 return &wrapped_opt_array_ref.value();
127 return &wrapped_opt_array_ref.value();
131 return wrapped_opt_array_ref.value();
135 return wrapped_opt_array_ref.value();
139 return std::move(wrapped_opt_array_ref.value());
143 return std::move(wrapped_opt_array_ref.value());
146 constexpr explicit operator bool() const noexcept {
147 return wrapped_opt_array_ref.has_value();
151 return wrapped_opt_array_ref.has_value();
155 return wrapped_opt_array_ref.value();
159 return wrapped_opt_array_ref.value();
163 return std::move(wrapped_opt_array_ref.value());
167 return std::move(wrapped_opt_array_ref.value());
170 template <
typename U>
174 return wrapped_opt_array_ref.value_or(default_value);
177 template <
typename U>
181 return wrapped_opt_array_ref.value_or(default_value);
187 std::swap(wrapped_opt_array_ref, other.wrapped_opt_array_ref);
191 wrapped_opt_array_ref.reset();
194 template <
typename... Args>
195 constexpr std::enable_if_t<
196 std::is_constructible<ArrayRef<T>, Args&&...>
::value,
199 std::is_nothrow_constructible<ArrayRef<T>, Args&&...>
::value) {
200 return wrapped_opt_array_ref.emplace(args...);
203 template <
typename U,
typename... Args>
205 std::initializer_list<U> il,
206 Args&&... args)
noexcept {
207 return wrapped_opt_array_ref.emplace(il, args...);
222 return a1.
value() == other;
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: ArrayRef.h:40
Definition: OptionalArrayRef.h:20
constexpr OptionalArrayRef & operator=(const optional< ArrayRef< T > > &other) noexcept
Definition: OptionalArrayRef.h:95
constexpr OptionalArrayRef(const T &value) noexcept
Definition: OptionalArrayRef.h:38
constexpr ArrayRef< T > & operator*() &noexcept
Definition: OptionalArrayRef.h:130
constexpr std::enable_if_t< std::is_constructible< ArrayRef< T >, Args &&... >::value, ArrayRef< T > & > emplace(Args &&... args) noexcept(std::is_nothrow_constructible< ArrayRef< T >, Args &&... >::value)
Definition: OptionalArrayRef.h:198
constexpr const ArrayRef< T > & value() const &
Definition: OptionalArrayRef.h:158
constexpr OptionalArrayRef(U &&value) noexcept(std::is_nothrow_constructible< ArrayRef< T >, U && >::value)
Definition: OptionalArrayRef.h:50
constexpr const ArrayRef< T > * operator->() const noexcept
Definition: OptionalArrayRef.h:126
constexpr std::enable_if_t< !std::is_same< std::decay_t< U >, OptionalArrayRef >::value &&std::is_constructible< ArrayRef< T >, U && >::value &&std::is_assignable< ArrayRef< T > &, U && >::value, OptionalArrayRef & > operator=(U &&value) noexcept(std::is_nothrow_constructible< ArrayRef< T >, U && >::value &&std::is_nothrow_assignable< ArrayRef< T > &, U && >::value)
Definition: OptionalArrayRef.h:113
constexpr OptionalArrayRef(const optional< ArrayRef< T > > &other) noexcept
Definition: OptionalArrayRef.h:32
OptionalArrayRef & operator=(const OptionalArrayRef &other)=default
constexpr ArrayRef< T > && value() &&
Definition: OptionalArrayRef.h:162
OptionalArrayRef(const OptionalArrayRef &other)=default
constexpr void swap(OptionalArrayRef &other) noexcept
Definition: OptionalArrayRef.h:186
constexpr const ArrayRef< T > && operator*() const &&noexcept
Definition: OptionalArrayRef.h:142
constexpr const ArrayRef< T > & operator*() const &noexcept
Definition: OptionalArrayRef.h:134
constexpr std::enable_if_t< std::is_convertible< U &&, ArrayRef< T > >::value, ArrayRef< T > > value_or(U &&default_value) const &
Definition: OptionalArrayRef.h:173
constexpr ArrayRef< T > * operator->() noexcept
Definition: OptionalArrayRef.h:122
constexpr OptionalArrayRef(optional< ArrayRef< T > > &&other) noexcept
Definition: OptionalArrayRef.h:35
constexpr ArrayRef< T > & emplace(std::initializer_list< U > il, Args &&... args) noexcept
Definition: OptionalArrayRef.h:204
constexpr void reset() noexcept
Definition: OptionalArrayRef.h:190
constexpr OptionalArrayRef(in_place_t ip, std::initializer_list< U > il, Args &&... args)
Definition: OptionalArrayRef.h:71
~OptionalArrayRef()=default
constexpr OptionalArrayRef(const std::initializer_list< T > &Vec)
Definition: OptionalArrayRef.h:77
OptionalArrayRef & operator=(OptionalArrayRef &&other)=default
constexpr ArrayRef< T > & value() &
Definition: OptionalArrayRef.h:154
constexpr const ArrayRef< T > && value() const &&
Definition: OptionalArrayRef.h:166
constexpr OptionalArrayRef() noexcept=default
constexpr OptionalArrayRef(in_place_t ip, Args &&... args) noexcept
Definition: OptionalArrayRef.h:67
constexpr OptionalArrayRef & operator=(optional< ArrayRef< T > > &&other) noexcept
Definition: OptionalArrayRef.h:101
constexpr ArrayRef< T > && operator*() &&noexcept
Definition: OptionalArrayRef.h:138
constexpr std::enable_if_t< std::is_convertible< U &&, ArrayRef< T > >::value, ArrayRef< T > > value_or(U &&default_value) &&
Definition: OptionalArrayRef.h:180
constexpr OptionalArrayRef & operator=(nullopt_t) noexcept
Definition: OptionalArrayRef.h:86
constexpr bool has_value() const noexcept
Definition: OptionalArrayRef.h:150
OptionalArrayRef(OptionalArrayRef &&other)=default
Definition: Optional.h:549
constexpr nullopt_t nullopt
Definition: Optional.h:163
bool operator==(c10::ArrayRef< T > a1, c10::ArrayRef< T > a2)
Definition: ArrayRef.h:335
Definition: Optional.h:160