VCCC  2024.05
VisualCamp Common C++ library
compressed_pair.hpp File Reference
#include <cstddef>
#include <type_traits>
#include <utility>
#include "vccc/__core/inline_or_static.hpp"
#include "vccc/__type_traits/conjunction.hpp"
#include "vccc/__type_traits/is_swappable.hpp"

Go to the source code of this file.

Classes

struct  compressed_pair_empty_t
 
class  compressed_pair< T, U >
 An size-optimized pair using empty base optimization. More...
 
struct  tuple_element< 0, vccc::compressed_pair< T, U > >
 
struct  tuple_element< 1, vccc::compressed_pair< T, U > >
 
struct  tuple_size< vccc::compressed_pair< T, U > >
 

Namespaces

 vccc
 
 std
 

Functions

template<typename T , typename U >
constexpr std::enable_if_t< conjunction< is_swappable< T >, is_swappable< U > >::value > swap (compressed_pair< T, U > &lhs, compressed_pair< T, U > &rhs) noexcept(conjunction< is_nothrow_swappable< T >, is_nothrow_swappable< U >>::value)
 
template<std::size_t I, typename T , typename U >
constexpr tuple_element_t< I, vccc::compressed_pair< T, U > > & get (vccc::compressed_pair< T, U > &p) noexcept
 
template<std::size_t I, typename T , typename U >
constexpr const tuple_element_t< I, vccc::compressed_pair< T, U > > & get (const vccc::compressed_pair< T, U > &p) noexcept
 
template<std::size_t I, typename T , typename U >
constexpr tuple_element_t< I, vccc::compressed_pair< T, U > > && get (vccc::compressed_pair< T, U > &&p) noexcept
 
template<std::size_t I, typename T , typename U >
constexpr const tuple_element_t< I, vccc::compressed_pair< T, U > > && get (const vccc::compressed_pair< T, U > &&p) noexcept
 
template<typename T , typename U >
constexpr T & get (vccc::compressed_pair< T, U > &p) noexcept
 
template<typename T , typename U >
constexpr const T & get (const vccc::compressed_pair< T, U > &p) noexcept
 
template<typename T , typename U >
constexpr T && get (vccc::compressed_pair< T, U > &&p) noexcept
 
template<typename T , typename U >
constexpr const T && get (const vccc::compressed_pair< T, U > &&p) noexcept
 
template<typename T , typename U >
constexpr T & get (vccc::compressed_pair< U, T > &p) noexcept
 
template<typename T , typename U >
constexpr const T & get (const vccc::compressed_pair< U, T > &p) noexcept
 
template<typename T , typename U >
constexpr T && get (vccc::compressed_pair< U, T > &&p) noexcept
 
template<typename T , typename U >
constexpr const T && get (const vccc::compressed_pair< U, T > &&p) noexcept
 

Variables

constexpr VCCC_INLINE_OR_STATIC compressed_pair_empty_t compressed_pair_empty