- functional[meta header]
- std[meta namespace]
- reference_wrapper[meta class]
- function template[meta id-type]
friend constexpr bool
operator==(reference_wrapper x,
reference_wrapper y); // (1) C++26
friend constexpr bool
operator==(reference_wrapper x,
const T& y); // (2) C++26
friend constexpr bool
operator==(reference_wrapper x,
reference_wrapper<const T> y); // (3) C++26
等値比較を行う。
- (1) : 同じ要素型の
reference_wrapper
同士を等値比較する - (2) :
reference_wrapper
と要素型T
を等値比較する - (3) :
reference_wrapper<T>
とreference_wrapper<const T>
を等値比較する
(2)と(3)はオペランドを左右で逆にしても使用できる。
- (1) : 式
x.
get()
== y.
get()
が妥当であり、その戻り値型がbool
に変換可能であること - (2) : 式
x.
get()
== y
が妥当であり、その戻り値型がbool
に変換可能であること - (3) : 式
x.
get()
== y.
get()
が妥当であり、その戻り値型がbool
に変換可能であること
-
(1) :
return x.get() == y.get();
- get()[link get.md]
-
(2) :
return x.get() == y;
- get()[link get.md]
-
(3) :
return x.get() == y.get();
- get()[link get.md]
- この演算子により、以下の演算子が使用可能になる:
operator!=
#include <cassert>
#include <functional>
int main()
{
int x = 3;
int y = 3;
assert(std::ref(x) == std::ref(y));
assert(std::ref(x) == 3);
assert(3 == std::ref(x));
assert(std::ref(x) == std::cref(y));
assert(std::cref(x) == std::ref(y));
}
- std::ref[link /reference/functional/ref.md]
- std::cref[link /reference/functional/cref.md]
- C++26
- Clang: 3.0 [mark verified]
- GCC: 4.4 [mark verified]
- Visual C++: 2019 [mark verified]