16 using first_type =
typename std::add_lvalue_reference<T1>::type;
17 using second_type =
typename std::add_lvalue_reference<T2>::type;
22 ref_pair(first_type _first, second_type _second) : first(_first), second(_second)
25 ref_pair(
const ref_pair& other) =
default;
27 bool operator==(
const std::pair<
typename std::decay<T1>::type,
typename std::decay<T2>::type>& other)
const
29 return first == other.first && second == other.second;
32 bool operator!=(
const std::pair<
typename std::decay<T1>::type,
typename std::decay<T2>::type>& other)
const
34 return !operator==(other);
37 bool operator==(
const ref_pair& other)
const
39 return first == other.first && second == other.second;
42 bool operator!=(
const ref_pair& other)
const
44 return !operator==(other);
47 ref_pair* operator->()