| 427 | using std::swap; |
| 428 | |
| 429 | struct is_swappable |
| 430 | { |
| 431 | template< typename T, typename = decltype( swap( std::declval<T&>(), std::declval<T&>() ) ) > |
| 432 | static std::true_type test( int /* unused */); |
| 433 | |
| 434 | template< typename > |
| 435 | static std::false_type test(...); |
| 436 | }; |
| 437 | |
| 438 | struct is_nothrow_swappable |
| 439 | { |