Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::semiregular_box< T > Struct Template Reference
+ 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_boxoperator= (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_boxoperator= (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) &&
constexprnoexcept
Precondition
requires invocable<T, Args...>

◆ operator()() [2/3]

template<typename T >
template<typename... Args>
constexpr decltype(auto) ranges::semiregular_box< T >::operator() ( Args &&...  args) &
constexprnoexcept
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 &
constexprnoexcept
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 
)
constexprnoexcept
Precondition
requires constructible_from<T, Args...>