EnTT: entt::compressed_pair< First, Second > Class Template Reference

EnTT 3.15.0

Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
entt::compressed_pair< First, Second > Class Template Referencefinal

A compressed pair. More...

`#include <compressed_pair.hpp>`

Inheritance diagram for entt::compressed_pair< First, Second >:
[legend]
Collaboration diagram for entt::compressed_pair< First, Second >:
[legend]

## Public Types
using | first_type = First
| The type of the first element that the pair stores.
using | second_type = Second
| The type of the second element that the pair stores.

## Public Member Functions
template<bool Dummy = true, typename = std::enable_if_t<Dummy && std::is_default_constructible_v<first_type> && std::is_default_constructible_v<second_type>>>
constexpr | compressed_pair () noexcept(std::is_nothrow_default_constructible_v< first_base > &&std::is_nothrow_default_constructible_v< second_base >)
| Default constructor, conditionally enabled.
constexpr | compressed_pair (const compressed_pair &other)=default
| Copy constructor.
constexpr | compressed_pair (compressed_pair &&other) noexcept=default
| Move constructor.
template<typename Arg, typename Other>
constexpr | compressed_pair (Arg &&arg, Other &&other) noexcept(std::is_nothrow_constructible_v< first_base, Arg > &&std::is_nothrow_constructible_v< second_base, Other >)
| Constructs a pair from its values.
template<typename... Args, typename... Other>
constexpr | compressed_pair (std::piecewise_construct_t, std::tuple< Args... > args, std::tuple< Other... > other) noexcept(std::is_nothrow_constructible_v< first_base, Args... > &&std::is_nothrow_constructible_v< second_base, Other... >)
| Constructs a pair by forwarding the arguments to its parts.
| ~compressed_pair ()=default
| Default destructor.
constexpr compressed_pair & | operator= (const compressed_pair &other)=default
| Copy assignment operator.
constexpr compressed_pair & | operator= (compressed_pair &&other) noexcept=default
| Move assignment operator.
constexpr first_type & | first () noexcept
| Returns the first element that a pair stores.
constexpr const first_type & | first () const noexcept
| Returns the first element that a pair stores.
constexpr second_type & | second () noexcept
| Returns the second element that a pair stores.
constexpr const second_type & | second () const noexcept
| Returns the second element that a pair stores.
constexpr void | swap (compressed_pair &other) noexcept
| Swaps two compressed pair objects.
template<std::size_t Index>
constexpr decltype(auto) | get () noexcept
| Extracts an element from the compressed pair.
template<std::size_t Index>
constexpr decltype(auto) | get () const noexcept
| Extracts an element from the compressed pair.

## Detailed Description

template<typename First, typename Second>
class entt::compressed_pair< First, Second >

A compressed pair.

A pair that exploits the Empty Base Class Optimization (or EBCO) to reduce its final size to a minimum.

Template Parameters

  First | The type of the first element that the pair stores.
  Second | The type of the second element that the pair stores.

Definition at line 85 of file compressed_pair.hpp.

## Member Typedef Documentation

## ◆ first_type

template<typename First, typename Second>

using entt::compressed_pair< First, Second >::first_type = First

The type of the first element that the pair stores.

Definition at line 93 of file compressed_pair.hpp.

## ◆ second_type

template<typename First, typename Second>

using entt::compressed_pair< First, Second >::second_type = Second

The type of the second element that the pair stores.

Definition at line 95 of file compressed_pair.hpp.

## Constructor & Destructor Documentation

## ◆ compressed_pair() [1/5]

template<typename First, typename Second>
template<bool Dummy = true, typename = std::enable_if_t<Dummy && std::is_default_constructible_v<first_type> && std::is_default_constructible_v<second_type>>>

entt::compressed_pair< First, Second >::compressed_pair | ( |  | ) |
| inlineconstexprnoexcept

Default constructor, conditionally enabled.

This constructor is only available when the types that the pair stores are both at least default constructible.

Template Parameters

  Dummy | Dummy template parameter used for internal purposes.

Definition at line 106 of file compressed_pair.hpp.

## ◆ compressed_pair() [2/5]

template<typename First, typename Second>

entt::compressed_pair< First, Second >::compressed_pair | ( | const compressed_pair< First, Second > & | other | ) |
| constexprdefault

Copy constructor.

Parameters

  other | The instance to copy from.

## ◆ compressed_pair() [3/5]

template<typename First, typename Second>

entt::compressed_pair< First, Second >::compressed_pair | ( | compressed_pair< First, Second > && | other | ) |
| constexprdefaultnoexcept

Move constructor.

Parameters

  other | The instance to move from.

## ◆ compressed_pair() [4/5]

template<typename First, typename Second>
template<typename Arg, typename Other>

entt::compressed_pair< First, Second >::compressed_pair | ( | Arg && | arg,
|  | Other && | other )
| inlineconstexprnoexcept

Constructs a pair from its values.

Template Parameters

  Arg | Type of value to use to initialize the first element.
  Other | Type of value to use to initialize the second element.

Parameters

  arg | Value to use to initialize the first element.
  other | Value to use to initialize the second element.

Definition at line 130 of file compressed_pair.hpp.

## ◆ compressed_pair() [5/5]

template<typename First, typename Second>
template<typename... Args, typename... Other>

entt::compressed_pair< First, Second >::compressed_pair | ( | std::piecewise_construct_t | ,
|  | std::tuple< Args... > | args,
|  | std::tuple< Other... > | other )
| inlineconstexprnoexcept

Constructs a pair by forwarding the arguments to its parts.

Template Parameters

  Args | Types of arguments to use to initialize the first element.
  Other | Types of arguments to use to initialize the second element.

Parameters

  args | Arguments to use to initialize the first element.
  other | Arguments to use to initialize the second element.

Definition at line 142 of file compressed_pair.hpp.

## Member Function Documentation

## ◆ first() [1/2]

template<typename First, typename Second>

const first_type & entt::compressed_pair< First, Second >::first | ( |  | ) | const
| inlinenodiscardconstexprnoexcept

Returns the first element that a pair stores.

Returns
  The first element that a pair stores.

Definition at line 172 of file compressed_pair.hpp.

## ◆ first() [2/2]

template<typename First, typename Second>

first_type & entt::compressed_pair< First, Second >::first | ( |  | ) |
| inlinenodiscardconstexprnoexcept

Returns the first element that a pair stores.

Returns
  The first element that a pair stores.

Definition at line 167 of file compressed_pair.hpp.

## ◆ get() [1/2]

template<typename First, typename Second>
template<std::size_t Index>

decltype(auto) entt::compressed_pair< First, Second >::get | ( |  | ) | const
| inlinenodiscardconstexprnoexcept

Extracts an element from the compressed pair.

Template Parameters

  Index | An integer value that is either 0 or 1.

Returns
  Returns a reference to the first element if `Index` is 0 and a reference to the second element if `Index` is 1.

Definition at line 217 of file compressed_pair.hpp.

## ◆ get() [2/2]

template<typename First, typename Second>
template<std::size_t Index>

decltype(auto) entt::compressed_pair< First, Second >::get | ( |  | ) |
| inlinenodiscardconstexprnoexcept

Extracts an element from the compressed pair.

Template Parameters

  Index | An integer value that is either 0 or 1.

Returns
  Returns a reference to the first element if `Index` is 0 and a reference to the second element if `Index` is 1.

Definition at line 206 of file compressed_pair.hpp.

## ◆ operator=() [1/2]

template<typename First, typename Second>

compressed_pair & entt::compressed_pair< First, Second >::operator= | ( | compressed_pair< First, Second > && | other | ) |
| constexprdefaultnoexcept

Move assignment operator.

Parameters

  other | The instance to move from.

Returns
  This compressed pair object.

## ◆ operator=() [2/2]

template<typename First, typename Second>

compressed_pair & entt::compressed_pair< First, Second >::operator= | ( | const compressed_pair< First, Second > & | other | ) |
| constexprdefault

Copy assignment operator.

Parameters

  other | The instance to copy from.

Returns
  This compressed pair object.

## ◆ second() [1/2]

template<typename First, typename Second>

const second_type & entt::compressed_pair< First, Second >::second | ( |  | ) | const
| inlinenodiscardconstexprnoexcept

Returns the second element that a pair stores.

Returns
  The second element that a pair stores.

Definition at line 185 of file compressed_pair.hpp.

## ◆ second() [2/2]

template<typename First, typename Second>

second_type & entt::compressed_pair< First, Second >::second | ( |  | ) |
| inlinenodiscardconstexprnoexcept

Returns the second element that a pair stores.

Returns
  The second element that a pair stores.

Definition at line 180 of file compressed_pair.hpp.

## ◆ swap()

template<typename First, typename Second>

void entt::compressed_pair< First, Second >::swap | ( | compressed_pair< First, Second > & | other | ) |
| inlineconstexprnoexcept

Swaps two compressed pair objects.

Parameters

  other | The compressed pair to swap with.

Definition at line 193 of file compressed_pair.hpp.

The documentation for this class was generated from the following file:

- src/entt/core/compressed_pair.hpp