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.

4489. concat_view::iterator's iter_swap has tautologically false noexcept specification

Section: 25.7.18.3 [range.concat.iterator] Status: New Submitter: Nhat Nguyen Opened: 2025-12-10 Last modified: 2026-01-19

Priority: 3

View other active issues in [range.concat.iterator].

View all other issues in [range.concat.iterator].

View all issues with New status.

Discussion:

The noexcept specification of concat_view::iterator's iter_swap has noexcept(ranges::swap(*x, *y)), where x and y is concat_view::iterator. However, concat_view::iterator's operator* does not have a noexcept specification, therefore noexcept(ranges::swap(*x, *y)) is always false and then the noexcept specification of concat_view::iterator's iter_swap is always noexcept(false).

[2026-01-16; Reflector poll.]

Set priority to 3 after reflector poll.

"Might want to add noexcept to operator*." "Yes, even though it has a narrow contract."

Proposed resolution: