This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
constexpr-wrapper-like
needs remove_cvref_t
in simd::basic_vec
constructorSection: 29.10.7.2 [simd.ctor] Status: New Submitter: Hewill Kang Opened: 2025-10-05 Last modified: 2025-10-10
Priority: Not Prioritized
View other active issues in [simd.ctor].
View all other issues in [simd.ctor].
View all issues with New status.
Discussion:
decltype(From::value)
would be const int&
if From
is a type of std::cw<42>
,
so the reference also needs to be removed for checking the arithmetic type.
Proposed resolution:
This wording is relative to N5014.
Modify 29.10.7.2 [simd.ctor] as indicated:
template<class U> constexpr explicit(see below) basic_vec(U&& value) noexcept;-1- Let
[…] -4- Remarks: The expression insideFrom
denote the typeremove_cvref_t<U>
.explicit
evaluates tofalse
if and only ifU
satisfiesconvertible_to<value_type>
, and either
(4.1) —
From
is not an arithmetic type and does not satisfyconstexpr-wrapper-like
,(4.2) —
From
is an arithmetic type and the conversion fromFrom
tovalue_type
is value-preserving (29.10.1 [simd.general]), or(4.3) —
From
satisfiesconstexpr-wrapper-like
,remove_cvref_t
is an arithmetic type, andremove_const_t<decltype(From::value)>From::value
is representable byvalue_type
.