|
template<class T> |
tag | swap (T &, T &) |
|
template<class T, std::size_t N> |
tag | swap (T(&a)[N], T(&b)[N]) |
|
template<class, class> |
std::false_type | can_swap (...) noexcept(false) |
|
template<class T, class U, class = decltype(swap(std::declval<T&>(), std::declval<U&>()))> |
std::true_type | can_swap (int) noexcept(noexcept(swap(std::declval< T & >(), std::declval< U & >()))) |
|
template<class, class> |
std::false_type | uses_std (...) |
|
template<class T, class U> |
std::is_same< decltype(swap(std::declval< T & >(), std::declval< U & >())), tag > | uses_std (int) |
|