17204
17204
constexpr basic_simd() noexcept = default;
17205
17205
17206
17206
// \ref{simd.ctor}, \tcode{basic_simd} constructors
17207
- template<class U> constexpr basic_simd(U&& value) noexcept;
17207
+ template<class U> constexpr explicit(@\seebelow@) basic_simd(U&& value) noexcept;
17208
17208
template<class U, class UAbi>
17209
17209
constexpr explicit(@\seebelow@) basic_simd(const basic_simd<U, UAbi>&) noexcept;
17210
17210
template<class G> constexpr explicit basic_simd(G&& gen) noexcept;
17310
17310
17311
17311
\pnum
17312
17312
\recommended
17313
- Implementations should support explicit conversions between specializations of
17313
+ Implementations should support implicit conversions between specializations of
17314
17314
\tcode{basic_simd} and appropriate \impldef{conversions of \tcode{basic_simd}
17315
17315
from/to implementation-specific vector types} types.
17316
17316
\begin{note}
17321
17321
\rSec3[simd.ctor]{\tcode{basic_simd} constructors}
17322
17322
17323
17323
\begin{itemdecl}
17324
- template<class U> constexpr basic_simd(U&&) noexcept;
17324
+ template<class U> constexpr explicit(@\seebelow@) basic_simd(U&& value ) noexcept;
17325
17325
\end{itemdecl}
17326
17326
17327
17327
\begin{itemdescr}
@@ -17330,24 +17330,29 @@
17330
17330
17331
17331
\pnum
17332
17332
\constraints
17333
- \tcode{From} satisfies \tcode{convertible_to<value_type>}, and either
17333
+ \tcode{value_type} satisfies \tcode{constructible_from<U>}.
17334
+
17335
+ \pnum
17336
+ \effects
17337
+ Initializes each element to the value of the argument after conversion to
17338
+ \tcode{value_type}.
17339
+
17340
+ \pnum
17341
+ \remarks
17342
+ The expression inside \tcode{explicit} evaluates to \tcode{false} if and only if
17343
+ \tcode{U} satisfies \tcode{convertible_to<value_type>}, and either
17334
17344
\begin{itemize}
17345
+ \item
17346
+ \tcode{From} is not an arithmetic type and does not satisfy
17347
+ \exposconcept{constexpr-wrapper-like},
17335
17348
\item
17336
17349
\tcode{From} is an arithmetic type and the conversion from \tcode{From} to
17337
17350
\tcode{value_type} is value-preserving\iref{simd.general}, or
17338
17351
\item
17339
- \tcode{From} is not an arithmetic type and does not satisfy
17340
- \tcode{\exposconcept{constexpr-wrapper-like}}, or
17341
- \item
17342
- \tcode{From} satisfies \tcode{\exposconcept{constexpr-wrapper-like}},
17352
+ \tcode{From} satisfies \exposconcept{constexpr-wrapper-like},
17343
17353
\tcode{remove_const_t<decltype(From::value)>} is an arithmetic type, and
17344
17354
\tcode{From::value} is representable by \tcode{value_type}.
17345
17355
\end{itemize}
17346
-
17347
- \pnum
17348
- \effects
17349
- Initializes each element to the value of the argument after conversion to
17350
- \tcode{value_type}.
17351
17356
\end{itemdescr}
17352
17357
17353
17358
\begin{itemdecl}
17384
17389
\end{itemdescr}
17385
17390
17386
17391
\begin{itemdecl}
17387
- template<class G> constexpr explicit basic_simd(G&& gen) noexcept ;
17392
+ template<class G> constexpr explicit basic_simd(G&& gen);
17388
17393
\end{itemdecl}
17389
17394
17390
17395
\begin{itemdescr}
17408
17413
17409
17414
\pnum
17410
17415
\remarks
17411
- The calls to \tcode{gen} are unsequenced with respect to each other.
17412
- Vectorization-unsafe\iref{algorithms.parallel.defns} standard library functions
17413
- may not be invoked by \tcode{gen}.
17414
- \tcode{gen} is invoked exactly once for each $i$.
17416
+ \tcode{gen} is invoked exactly once for each $i$, in increasing order of $i$.
17415
17417
\end{itemdescr}
17416
17418
17417
17419
\begin{itemdecl}
19180
19182
\tcode{basic_simd_mask<Bytes, Abi>} is trivially copyable.
19181
19183
19182
19184
\pnum
19183
- \recommended Implementations should support explicit conversions between
19185
+ \recommended Implementations should support implicit conversions between
19184
19186
specializations of \tcode{basic_simd_mask} and appropriate \impldef{conversions
19185
19187
of \tcode{basic_simd_mask} from/to implementation-specific vector types} types.
19186
19188
\begin{note}
19218
19220
\end{itemdescr}
19219
19221
19220
19222
\begin{itemdecl}
19221
- template<class G> constexpr explicit basic_simd_mask(G&& gen) noexcept ;
19223
+ template<class G> constexpr explicit basic_simd_mask(G&& gen);
19222
19224
\end{itemdecl}
19223
19225
19224
19226
\begin{itemdescr}
19236
19238
19237
19239
\pnum
19238
19240
\remarks
19239
- The calls to \tcode{gen} are unsequenced with respect to each other.
19240
- Vectorization-unsafe\iref{algorithms.parallel.defns} standard library
19241
- functions may not be invoked by \tcode{gen}.
19242
- \tcode{gen} is invoked exactly once for each $i$.
19241
+ \tcode{gen} is invoked exactly once for each $i$, in increasing order of $i$.
19243
19242
\end{itemdescr}
19244
19243
19245
19244
\rSec3[simd.mask.subscr]{\tcode{basic_simd_mask} subscript operator}
0 commit comments