template <class U, class AA>
friend constexpr auto operator<=>(
const indirect& lhs, const indirect<U, AA>& rhs)
-> synth-three-way-result<T, U>; // (1)
template <class U>
friend constexpr auto operator<=>(
const indirect& lhs, const U& rhs)
-> synth-three-way-result<T, U>; // (2)
概要
- (1) : 2つの
indirectオブジェクトが所有する値を三方比較する。 - (2) :
indirectオブジェクトが所有する値と、別の値rhsを三方比較する。
いずれもHidden friendsとして定義される。
戻り値
- (1) :
lhsとrhsのいずれかが無効値状態であれば!lhs.valueless_after_move() <=> !rhs.valueless_after_move()、そうでなければsynth-three-way(*lhs, *rhs)。 - (2) :
lhsが無効値状態であればstd::strong_ordering::less、そうでなければsynth-three-way(*lhs, rhs)。
備考
この演算子により、operator< / operator<= / operator> / operator>=が使用可能になる。
例
出力
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ✅
- Visual C++: 2026 Update 2 ❌