C++ | Compiler support | Freestanding and hosted | Language | Standard library | Standard library headers | Named requirements | Feature test macros | Language support library | Concepts library | Diagnostics library | Memory management library | Metaprogramming library | Containers library | Iterators library | Ranges library | Algorithms library | Strings library | Text processing library | Numerics library | Date and time library | Input/output library | Filesystem library | Concurrency support library | Execution control library | Technical specifications | Symbols index | [edit]
From cppreference.com
template<classF,classI1,classI2=I1>conceptindirect_strict_weak_order=std::indirectly_readable<I1>&&std::indirectly_readable<I2>&&std::copy_constructible<F>&&std::strict_weak_order<F&,/*indirect-value-t*/<I1>,/*indirect-value-t*/<I2>>&&std::strict_weak_order<F&,/*indirect-value-t*/<I1>,std::iter_reference_t<I2>>&&std::strict_weak_order<F&,std::iter_reference_t<I1>,/*indirect-value-t*/<I2>>&&std::strict_weak_order<F&,std::iter_reference_t<I1>,std::iter_reference_t<I2>>;(since C++20)The concept indirect_strict_weak_order specifies requirements for algorithms that call strict weak orders as their arguments. The key difference between this concept and
is that it is applied to the types that I1 and I2 references, rather than I1 and I2 themselves.
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++20 some requirements were defined in terms of
std::iter_value_t<I>& which mishandled projections
resulting in incompatibility with strict weak order F&defined in terms of
/*indirect-value-t*/<I> to
correctly handle such projections
C++20 indirect_strict_weak_order required F& to satisfy
with std::iter_common_reference_t<I>does not require