an be converted   
(class template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_common_comparison_category&action=edit)  
[ strong_order  ](/w/cpp/utility/compare/strong_order "cpp/utility/compare/strong order") (C++20)  |  performs 3-way comparison and produces a result of type ` std::strong_ordering `   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_strong_order&action=edit)  
[ weak_order  ](/w/cpp/utility/compare/weak_order "cpp/utility/compare/weak order") (C++20)  |  performs 3-way comparison and produces a result of type ` std::weak_ordering `   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_weak_order&action=edit)  
[ partial_order  ](/w/cpp/utility/compare/partial_order "cpp/utility/compare/partial order") (C++20)  |  performs 3-way comparison and produces a result of type ` std::partial_ordering `   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_partial_order&action=edit)  
[ compare_strong_order_fallback  ](/w/cpp/utility/compare/compare_strong_order_fallback "cpp/utility/compare/compare strong order fallback") (C++20)  |  performs 3-way comparison and produces a result of type ` std::strong_ordering ` , even if  operator  <=> is unavailable   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_compare_strong_order_fallback&action=edit)  
[ compare_weak_order_fallback  ](/w/cpp/utility/compare/compare_weak_order_fallback "cpp/utility/compare/compare weak order fallback") (C++20)  |  performs 3-way comparison and produces a result of type ` std::weak_ordering ` , even if  operator  <=> is unavailable   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_compare_weak_order_fallback&action=edit)  
[ compare_partial_order_fallback  ](/w/cpp/utility/compare/compare_partial_order_fallback "cpp/utility/compare/compare partial order fallback") (C++20)  |  performs 3-way comparison and produces a result of type ` std::partial_ordering ` , even if  operator  <=> is unavailable   
(customization point object)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/compare/dsc_compare_partial_order_fallback&action=edit)  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/utility&action=edit&section=13
"Edit section: Coroutine support") ]  [ Coroutine support ](/w/cpp/coroutine
"cpp/coroutine")

Types for coroutine support, e.g.  [ std::coroutine_traits ](/w/cpp/coroutine/coroutine_traits "cpp/coroutine/coroutine traits") ,  [ std::coroutine_handle ](/w/cpp/coroutine/coroutine_handle "cpp/coroutine/coroutine handle") .  |  (since C++20)   
---|---  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/utility&action=edit&section=14
"Edit section: Variadic functions") ]  [ Variadic functions
](/w/cpp/utility/variadic "cpp/utility/variadic")

Support for functions that take an arbitrary number of parameters (via e.g.  [
va_start ](/w/cpp/utility/variadic/va_start "cpp/utility/variadic/va start") ,
[ va_arg ](/w/cpp/utility/variadic/va_arg "cpp/utility/variadic/va arg") ,  [
va_end ](/w/cpp/utility/variadic/va_end "cpp/utility/variadic/va end") ).

##  [ [ edit ](/mwiki/index.php?title=cpp/utility&action=edit&section=15 "Edit
section: General-purpose utilities") ]  General-purpose utilities

###  [ [ edit ](/mwiki/index.php?title=cpp/utility&action=edit&section=16
"Edit section: Swap") ]  Swap

Defined in header ` [ <utility> ](/w/cpp/header/utility "cpp/header/utility")
`  
---  
[ swap  ](/w/cpp/algorithm/swap "cpp/algorithm/swap") |  swaps the values of two objects   
(function template)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/dsc_swap&action=edi