Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::is_swappable_with,std::is_swappable,std::is_nothrow_swappable_with,std::is_nothrow_swappable

      From cppreference.com
      <cpp‎ |types
       
       
      Metaprogramming library
      Type traits
      Type categories
      (C++11)
      (C++11)(DR*)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11) 
      Type properties
      (C++11)
      (C++11)
      (C++14)
      (C++11)(deprecated in C++26)
      (C++11)(until C++20*)
      (C++11)(deprecated in C++20)
      (C++11)
      Type trait constants
      Metafunctions
      (C++17)
      Supported operations
      is_swappable_withis_swappableis_nothrow_swappable_withis_nothrow_swappable
      (C++17)(C++17)(C++17)(C++17)

      Relationships and property queries
      Type modifications
      Type transformations
      (C++11)(deprecated in C++23)
      (C++11)(deprecated in C++23)
      (C++11)
      (C++11)(until C++20*)(C++17)

      Compile-time rational arithmetic
      Compile-time integer sequences
       
      Defined in header<type_traits>
      template<class T,class U>
      struct is_swappable_with;
      (1)(since C++17)
      template<class T>
      struct is_swappable;
      (2)(since C++17)
      template<class T,class U>
      struct is_nothrow_swappable_with;
      (3)(since C++17)
      template<class T>
      struct is_nothrow_swappable;
      (4)(since C++17)
      1) If the expressionsswap(std::declval<T>(),std::declval<U>()) andswap(std::declval<U>(),std::declval<T>()) are both well-formed in unevaluated context afterusingstd::swap; (seeSwappable), provides the member constantvalue equaltrue. Otherwise,value isfalse.
      Access checks are performed as if from a context unrelated to either type.
      3) Same as(1), but evaluations of both expressions from(1) are known not to throw exceptions.
       Type trait The value of the member constantvalue
      T is areferenceable type T is not a referenceable type 
      (2)std::is_swappable_with<T&, T&>::valuefalse
      (4)std::is_nothrow_swappable_with<T&, T&>::value

      IfT orU is not a complete type, (possibly cv-qualified)void, or an array of unknown bound, the behavior is undefined.

      If an instantiation of a template above depends, directly or indirectly, on an incomplete type, and that instantiation could yield a different result if that type were hypothetically completed, the behavior is undefined.

      If the program adds specializations for any of the templates described on this page, the behavior is undefined.

      Contents

      [edit]Helper variable templates

      template<class T,class U>
      inlineconstexprbool is_swappable_with_v= is_swappable_with<T, U>::value;
      (since C++17)
      template<class T>
      inlineconstexprbool is_swappable_v= is_swappable<T>::value;
      (since C++17)
      template<class T,class U>

      inlineconstexprbool is_nothrow_swappable_with_v=

          is_nothrow_swappable_with<T, U>::value;
      (since C++17)
      template<class T>

      inlineconstexprbool is_nothrow_swappable_v=

          is_nothrow_swappable<T>::value;
      (since C++17)
      [edit]

      Inherited fromstd::integral_constant

      Member constants

      value
      [static]
      true ifT is swappable withU,false otherwise
      (public static member constant)

      Member functions

      operator bool
      converts the object tobool, returnsvalue
      (public member function)
      operator()
      (C++14)
      returnsvalue
      (public member function)

      Member types

      Type Definition
      value_typebool
      typestd::integral_constant<bool, value>

      [edit]Notes

      This trait does not check anything outside the immediate context of the swap expressions: if the use ofT orU would trigger template specializations, generation of implicitly-defined special member functions etc, and those have errors, the actual swap may not compile even ifstd::is_swappable_with<T, U>::value compiles and evaluates totrue.

      [edit]Example

      This section is incomplete
      Reason: no example

      [edit]See also

      swaps the values of two objects
      (function template)[edit]
      checks if a type has a move assignment operator
      (class template)[edit]
      specifies that a type can be swapped or that two types can be swapped with each other
      (concept)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/is_swappable&oldid=170608"

      [8]ページ先頭

      ©2009-2025 Movatter.jp