template<class T>
concept integral-constant-like = // exposition only
is_integral_v<remove_cvref_t<decltype(T::value)>> &&
!is_same_v<bool, remove_cvref_t<decltype(T::value)>> &&
convertible_to<T, decltype(T::value)> &&
equality_comparable_with<T, decltype(T::value)> &&
bool_constant<T() == T::value>::value &&
bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value;
概要
integral-constant-likeは、型Tが整数定数型std::integral_constantと互換があることを表す説明専用コンセプトである。
バージョン
言語
- C++26
参照
- P2630R4 Submdspan
- P3029R1 Better
mdspan's CTAD - LWG Issue 4486.
integral-constant-likeandconstexpr-wrapper-likeexposition-only concept duplication- C++26で、
decltype(T::value)にremove_cvref_tを適用するよう修正され、<span>と<simd>で重複していた制約が説明専用コンセプトconstexpr-wrapper-likeへ集約された
- C++26で、
- LWG Issue 4351.
integral-constant-likeneeds moreremove_cvref_t- C++26で、
bool型を除外する制約!is_same_v<bool, ...>でもremove_const_tではなくremove_cvref_tを用いるよう修正された(参照修飾されたbool定数が誤って許容されるのを防ぐもの)
- C++26で、