Сравнение адресов reference_wrappers

Как я могу сравнить два std::reference_wrapperпо ссылкам они держат? Я хочу увидеть, если ссылки двух std::reference_wrapperравны или нет.

Изменить: Извините от путаницы. Я имел в виду, как получить адреса референтов и сравнить их.

4

Решение

get() Функция-член возвращает ссылку на указанный элемент. Затем вы можете взять адреса референтов напрямую.

std::addressof(r1.get()) == std::addressof(r2.get())
9

Другие решения

Функция-член std::reference_wrapper::get вернет ссылку, которую он держит. Затем вы можете сравнить два указанных объекта с:

const auto& a = ref_a.get();
const auto& b = ref_b.get();
if (a == b) {
// …
}

Вышеуказанное, конечно, вызовет operator== на двух объектах (если тип является типом класса).

4

По вопросам рекламы [email protected]