These _S_noexcept() functions are only used in noexcept-specifiers and
never need to be called at runtime. They can be immediate functions,
i.e. consteval.
libstdc++-v3/ChangeLog:
* include/bits/iterator_concepts.h (_IterMove::_S_noexcept)
(_IterSwap::_S_noexcept): Change constexpr to consteval.
* include/bits/ranges_base.h (_Begin::_S_noexcept)
(_End::_S_noexcept, _RBegin::_S_noexcept, _REnd::_S_noexcept)
(_Size::_S_noexcept, _Empty::_S_noexcept, _Data::_S_noexcept):
Likewise.
* include/std/concepts (_Swap::_S_noexcept): Likewise.
Reviewed-by: Tomasz KamiĆski <tkaminsk@redhat.com>
};
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__adl_imove<_Tp>)
{
private:
template<typename _Tp, typename _Up>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__adl_iswap<_Tp, _Up>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (is_array_v<remove_reference_t<_Tp>>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__member_rbegin<_Tp>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__member_rend<_Tp>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__member_empty<_Tp>)
{
private:
template<typename _Tp>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__member_data<_Tp>)
{
private:
template<typename _Tp, typename _Up>
- static constexpr bool
+ static consteval bool
_S_noexcept()
{
if constexpr (__adl_swap<_Tp, _Up>)