|
| 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) |
| |