Range-v3 Range algorithms, views, and actions for the Standard Library |

Instances and minimal complete definitions | Public Member Functions | List of all members
ranges::semiregular_box< T > Struct Template Reference
Utility
Inheritance diagram for ranges::semiregular_box< T >:

## Public Member Functions
template<typename U >
| explicit (!convertible_to< U, T >) const expr semiregular_box(U &&u) noexcept(std::is_nothrow_constructible< T, U >::value)
constexpr T && | get () &&noexcept
constexpr T & | get () &noexcept
T const && | get () const &&=delete
constexpr T const & | get () const &noexcept
constexpr | operator T const & () const &noexcept
| operator T const && () const &&=delete
constexpr | operator T& () &noexcept
constexpr | operator T&& () &&noexcept
template<typename... Args>
constexpr decltype(auto) | operator() (Args &&... args) &&noexcept(is_nothrow_invocable_v< T, Args... >)
template<typename... Args>
constexpr decltype(auto) | operator() (Args &&... args) &noexcept(is_nothrow_invocable_v< T &, Args... >)
template<typename... Args>
constexpr decltype(auto) | operator() (Args &&... args) const &noexcept(is_nothrow_invocable_v< T const &, Args... >)
template<typename... Args>
void | operator() (Args &&...) const &&=delete
semiregular_box & | operator= (semiregular_box &&that) noexcept(std::is_nothrow_move_constructible< T >::value &&(!std::is_move_assignable< T >::value||std::is_nothrow_move_assignable< T >::value))
semiregular_box & | operator= (semiregular_box const &that) noexcept(std::is_nothrow_copy_constructible< T >::value &&(!std::is_copy_assignable< T >::value||std::is_nothrow_copy_assignable< T >::value))
template<typename... Args>
constexpr | semiregular_box (in_place_t, Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value)
| semiregular_box (semiregular_box &&that) noexcept(std::is_nothrow_move_constructible< T >::value)
| semiregular_box (semiregular_box const &that) noexcept(std::is_nothrow_copy_constructible< T >::value)

## Member Function Documentation

## ◆ explicit()

template<typename T >
template<typename U >

ranges::semiregular_box< T >::explicit | ( | !convertible_to< U, T > |  | ) | const &&
| noexcept

Precondition
  requires `(!same_as<uncvref_t<U>, semiregular_box>) && constructible_from<T, U>`

## ◆ operator()() [1/3]

template<typename T >
template<typename... Args>

constexpr decltype(auto) ranges::semiregular_box< T >::operator() | ( | Args &&... | args | ) | &&
| constexpr noexcept

Precondition
  requires `invocable<T, Args...>`

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

template<typename T >
template<typename... Args>

constexpr decltype(auto) ranges::semiregular_box< T >::operator() | ( | Args &&... | args | ) | &
| constexpr noexcept

Precondition
  requires `invocable<T &, Args...>`

## ◆ operator()() [3/3]

template<typename T >
template<typename... Args>

constexpr decltype(auto) ranges::semiregular_box< T >::operator() | ( | Args &&... | args | ) | const &
| constexpr noexcept

Precondition
  requires `invocable<T const &, Args...>`

## Constructor & Destructor Documentation

## ◆ semiregular_box()

template<typename T >
template<typename... Args>

constexpr ranges::semiregular_box< T >::semiregular_box | ( | in_place_t | ,
|  | Args &&... | args
| ) |  |
| constexpr noexcept

Precondition
  requires `constructible_from<T, Args...>`