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