[/
  Copyright 2023 Andrey Semashev

  Distributed under the Boost Software License, Version 1.0.

  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[section:is_swappable is_swappable]

   template <class T>
   struct is_swappable : public __tof {};

__inherit If the expression `swap(declval<T&>(), declval<T&>())` (in a context
where `std::swap` is visible) is valid, inherits from __true_type, otherwise from __false_type.

__compat This trait requires C++11 for full support. On C++03 compilers it will inherit from __true_type
for scalar types (including integral, floating point, enumeration, pointer and pointer-to-member types)
and from __false_type for anything else. If MSVC standard library is used, C++17
is required for full support. In this case, in C++11 and C++14 modes the trait will inherit from __true_type
for types that support move construction and move assignment and from __false_type for other types.

__header ` #include <boost/type_traits/is_swappable.hpp>` or ` #include <boost/type_traits.hpp>`

[endsect]
