22 #ifndef GEARS_ADL_SWAP_HPP
23 #define GEARS_ADL_SWAP_HPP
30 template<
typename T,
typename U,
typename R = decltype(swap(std::declval<T>(), std::declval<U>()))>
31 constexpr R adl_swap(T&& t, U&& u) noexcept(
swap(std::declval<T>(), std::declval<U>())) {
32 return swap(std::declval<T>(), std::declval<U>());
50 template<
typename T,
typename U,
typename R = decltype(detail::adl_swap(std::declval<T>(), std::declval<U>()))>
51 constexpr R
swap(T&& t, U&& u) noexcept(detail::adl_swap(std::declval<T>(), std::declval<U>())) {
52 return detail::adl_swap(std::declval<T>(), std::declval<U>());
57 #endif // GEARS_ADL_SWAP_HPP