16901
16901
constexpr basic_simd() noexcept = default;
16902
16902
16903
16903
// \ref{simd.ctor}, \tcode{basic_simd} constructors
16904
- template<class U> constexpr basic_simd(U&& value) noexcept;
16904
+ template<class U> constexpr explicit(@\seebelow@) basic_simd(U&& value) noexcept;
16905
16905
template<class U, class UAbi>
16906
16906
constexpr explicit(@\seebelow@) basic_simd(const basic_simd<U, UAbi>&) noexcept;
16907
16907
template<class G> constexpr explicit basic_simd(G&& gen) noexcept;
16995
16995
16996
16996
\pnum
16997
16997
\recommended
16998
- Implementations should support explicit conversions between specializations of
16998
+ Implementations should support implicit conversions between specializations of
16999
16999
\tcode{basic_simd} and appropriate \impldef{conversions of \tcode{basic_simd}
17000
17000
from/to implementation-specific vector types} types.
17001
17001
\begin{note}
17006
17006
\rSec3[simd.ctor]{\tcode{basic_simd} constructors}
17007
17007
17008
17008
\begin{itemdecl}
17009
- template<class U> constexpr basic_simd(U&&) noexcept;
17009
+ template<class U> constexpr explicit(@\seebelow@) basic_simd(U&& value ) noexcept;
17010
17010
\end{itemdecl}
17011
17011
17012
17012
\begin{itemdescr}
@@ -17015,24 +17015,29 @@
17015
17015
17016
17016
\pnum
17017
17017
\constraints
17018
- \tcode{From} satisfies \tcode{convertible_to<value_type>}, and either
17018
+ \tcode{value_type} satisfies \tcode{constructible_from<U>}.
17019
+
17020
+ \pnum
17021
+ \effects
17022
+ Initializes each element to the value of the argument after conversion to
17023
+ \tcode{value_type}.
17024
+
17025
+ \pnum
17026
+ \remarks
17027
+ The expression inside \tcode{explicit} evaluates to \tcode{false} if and only if
17028
+ \tcode{U} satisfies \tcode{convertible_to<value_type>}, and either
17019
17029
\begin{itemize}
17030
+ \item
17031
+ \tcode{From} is not an arithmetic type and does not satisfy
17032
+ \exposconcept{constexpr-wrapper-like},
17020
17033
\item
17021
17034
\tcode{From} is an arithmetic type and the conversion from \tcode{From} to
17022
17035
\tcode{value_type} is value-preserving\iref{simd.general}, or
17023
17036
\item
17024
- \tcode{From} is not an arithmetic type and does not satisfy
17025
- \tcode{\exposconcept{constexpr-wrapper-like}}, or
17026
- \item
17027
- \tcode{From} satisfies \tcode{\exposconcept{constexpr-wrapper-like}},
17037
+ \tcode{From} satisfies \exposconcept{constexpr-wrapper-like},
17028
17038
\tcode{remove_const_t<decltype(From::value)>} is an arithmetic type, and
17029
17039
\tcode{From::value} is representable by \tcode{value_type}.
17030
17040
\end{itemize}
17031
-
17032
- \pnum
17033
- \effects
17034
- Initializes each element to the value of the argument after conversion to
17035
- \tcode{value_type}.
17036
17041
\end{itemdescr}
17037
17042
17038
17043
\begin{itemdecl}
17069
17074
\end{itemdescr}
17070
17075
17071
17076
\begin{itemdecl}
17072
- template<class G> constexpr explicit basic_simd(G&& gen) noexcept ;
17077
+ template<class G> constexpr explicit basic_simd(G&& gen);
17073
17078
\end{itemdecl}
17074
17079
17075
17080
\begin{itemdescr}
17093
17098
17094
17099
\pnum
17095
17100
\remarks
17096
- The calls to \tcode{gen} are unsequenced with respect to each other.
17097
- Vectorization-unsafe\iref{algorithms.parallel.defns} standard library functions
17098
- may not be invoked by \tcode{gen}.
17099
- \tcode{gen} is invoked exactly once for each $i$.
17101
+ \tcode{gen} is invoked exactly once for each $i$, in increasing order of $i$.
17100
17102
\end{itemdescr}
17101
17103
17102
17104
\begin{itemdecl}
18544
18546
\tcode{basic_simd_mask<Bytes, Abi>} is trivially copyable.
18545
18547
18546
18548
\pnum
18547
- \recommended Implementations should support explicit conversions between
18549
+ \recommended Implementations should support implicit conversions between
18548
18550
specializations of \tcode{basic_simd_mask} and appropriate \impldef{conversions
18549
18551
of \tcode{basic_simd_mask} from/to implementation-specific vector types} types.
18550
18552
\begin{note}
18582
18584
\end{itemdescr}
18583
18585
18584
18586
\begin{itemdecl}
18585
- template<class G> constexpr explicit basic_simd_mask(G&& gen) noexcept ;
18587
+ template<class G> constexpr explicit basic_simd_mask(G&& gen);
18586
18588
\end{itemdecl}
18587
18589
18588
18590
\begin{itemdescr}
18600
18602
18601
18603
\pnum
18602
18604
\remarks
18603
- The calls to \tcode{gen} are unsequenced with respect to each other.
18604
- Vectorization-unsafe\iref{algorithms.parallel.defns} standard library
18605
- functions may not be invoked by \tcode{gen}.
18606
- \tcode{gen} is invoked exactly once for each $i$.
18605
+ \tcode{gen} is invoked exactly once for each $i$, in increasing order of $i$.
18607
18606
\end{itemdescr}
18608
18607
18609
18608
\rSec3[simd.mask.subscr]{\tcode{basic_simd_mask} subscript operator}
0 commit comments