https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102358
Bug ID: 102358 Summary: niter_base and miter_base overloaded for move_iterator missing constexpr Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- stl_iterator.h#L2416: template<typename _Iterator> auto __niter_base(move_iterator<_Iterator> __it) -> decltype(make_move_iterator(__niter_base(__it.base()))) { return make_move_iterator(__niter_base(__it.base())); } template<typename _Iterator> auto __miter_base(move_iterator<_Iterator> __it) -> decltype(__miter_base(__it.base())) { return __miter_base(__it.base()); } They seem to be missing constexpr: #include <algorithm> #include <array> constexpr bool b = [] { std::array<int, 2> in{}, out{}; std::move(std::move_iterator(in.begin()), std::move_iterator(in.end()), out.begin()); return true; }(); https://godbolt.org/z/PTrTnxTnK