25#ifndef LSST_AFW_TYPEHANDLING_DETAIL_REFWRAP_UTILS_H
26#define LSST_AFW_TYPEHANDLING_DETAIL_REFWRAP_UTILS_H
33namespace typehandling {
43 return a.get() ==
b.get();
46 template <
typename T,
typename U>
48 static_assert(!std::is_same_v<T, U>);
52 template <
typename ...E>
57 return std::visit(*
this,
a,
b);
81 template <
typename K,
typename V>
83 return _func(key, value.
get());
104 template <
typename K,
typename V>
106 return _func(key, value.
get());
auto operator()(K const &key, std::reference_wrapper< V > const &value) const
auto operator()(K const &key, std::reference_wrapper< V > const &value) const
refwrap_visitor(F &&func)
std::reference_wrapper< T > refwrap_const_cast(std::reference_wrapper< T const > const &r)
refwrap_visitor< F > make_refwrap_visitor(F &&func)
bool operator()(std::reference_wrapper< T > a, std::reference_wrapper< U > b)
bool operator()(std::reference_wrapper< T > a, std::reference_wrapper< T > b)
bool operator()(std::variant< std::reference_wrapper< E >... > const &a, std::variant< std::reference_wrapper< E >... > const &b)