1690116901 constexpr basic_simd() noexcept = default;
1690216902
1690316903 // \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;
1690516905 template<class U, class UAbi>
1690616906 constexpr explicit(@\seebelow@) basic_simd(const basic_simd<U, UAbi>&) noexcept;
1690716907 template<class G> constexpr explicit basic_simd(G&& gen) noexcept;
1699516995
1699616996\pnum
1699716997\recommended
16998- Implementations should support explicit conversions between specializations of
16998+ Implementations should support implicit conversions between specializations of
1699916999\tcode{basic_simd} and appropriate \impldef{conversions of \tcode{basic_simd}
1700017000from/to implementation-specific vector types} types.
1700117001\begin{note}
1700617006\rSec3[simd.ctor]{\tcode{basic_simd} constructors}
1700717007
1700817008\begin{itemdecl}
17009- template<class U> constexpr basic_simd(U&&) noexcept;
17009+ template<class U> constexpr explicit(@\seebelow@) basic_simd(U&& value ) noexcept;
1701017010\end{itemdecl}
1701117011
1701217012\begin{itemdescr}
@@ -17015,24 +17015,29 @@
1701517015
1701617016\pnum
1701717017\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
1701917029\begin{itemize}
17030+ \item
17031+ \tcode{From} is not an arithmetic type and does not satisfy
17032+ \exposconcept{constexpr-wrapper-like},
1702017033 \item
1702117034 \tcode{From} is an arithmetic type and the conversion from \tcode{From} to
1702217035 \tcode{value_type} is value-preserving\iref{simd.general}, or
1702317036 \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},
1702817038 \tcode{remove_const_t<decltype(From::value)>} is an arithmetic type, and
1702917039 \tcode{From::value} is representable by \tcode{value_type}.
1703017040\end{itemize}
17031-
17032- \pnum
17033- \effects
17034- Initializes each element to the value of the argument after conversion to
17035- \tcode{value_type}.
1703617041\end{itemdescr}
1703717042
1703817043\begin{itemdecl}
1706917074\end{itemdescr}
1707017075
1707117076\begin{itemdecl}
17072- template<class G> constexpr explicit basic_simd(G&& gen) noexcept ;
17077+ template<class G> constexpr explicit basic_simd(G&& gen);
1707317078\end{itemdecl}
1707417079
1707517080\begin{itemdescr}
1709317098
1709417099\pnum
1709517100\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$.
1710017102\end{itemdescr}
1710117103
1710217104\begin{itemdecl}
1854418546\tcode{basic_simd_mask<Bytes, Abi>} is trivially copyable.
1854518547
1854618548\pnum
18547- \recommended Implementations should support explicit conversions between
18549+ \recommended Implementations should support implicit conversions between
1854818550specializations of \tcode{basic_simd_mask} and appropriate \impldef{conversions
1854918551of \tcode{basic_simd_mask} from/to implementation-specific vector types} types.
1855018552\begin{note}
1858218584\end{itemdescr}
1858318585
1858418586\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);
1858618588\end{itemdecl}
1858718589
1858818590\begin{itemdescr}
1860018602
1860118603\pnum
1860218604\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$.
1860718606\end{itemdescr}
1860818607
1860918608\rSec3[simd.mask.subscr]{\tcode{basic_simd_mask} subscript operator}
0 commit comments