mpc
Haskell-like feature supports in C++
mpc::single< T, Tag > Struct Template Reference

A class that holds a single value. More...

#include <single.hpp>

Public Types

using value_type = T
 

Public Member Functions

 explicit (not detail::is_implicitly_default_constructible_v< T >) const expr single()=default
 
 single (const single &)=default
 
 single (single &&)=default
 
 explicit (not std::is_convertible_v< const T &, T >) const expr single(const T &rhs)
 
template<class U = T>
requires std::constructible_from<T, U&&> explicit(not std::is_convertible_v<U, T>)
constexpr single (U &&rhs)
 
template<tuple_like Tuple>
requires ( not std::constructible_from<T, Tuple&&> and std::constructible_from<T, detail::copy_reference_t<Tuple, std::tuple_element_t<0, Tuple>>&&> ) explicit(not std::is_convertible_v<std::tuple_element_t<0, Tuple>, T>)
constexpr single (Tuple &&rhs)
 
template<class... Args>
requires std::constructible_from<T, Args&&...>
constexpr single (std::in_place_t, Args &&... args)
 
template<class U , class... Args>
requires std::constructible_from<T, std::initializer_list<U>, Args&&...>
constexpr single (std::in_place_t, std::initializer_list< U > il, Args &&... args)
 
constexpr singleoperator= (const single &rhs)
 
constexpr singleoperator= (single &&rhs) noexcept(std::is_nothrow_move_assignable_v< T >)
 
template<std::convertible_to< T > U = T>
singleoperator= (U &&rhs)
 
template<tuple_like Tuple>
requires ( not std::convertible_to<Tuple, T> and std::convertible_to<std::tuple_element_t<0, Tuple>, T> )
constexpr singleoperator= (Tuple &&rhs)
 
auto operator<=> (const single &) const =default
 
void swap (single &other) noexcept(std::is_nothrow_swappable_v< T >)
 
constexpr decltype(auto) operator* () &
 
constexpr decltype(auto) operator* () const &
 
constexpr decltype(auto) operator* () &&
 
constexpr decltype(auto) operator* () const &&
 
constexpr auto operator-> ()
 
constexpr auto operator-> () const
 

Detailed Description

template<class T, class Tag = void>
struct mpc::single< T, Tag >

A class that holds a single value.

To prepare multiple classes with different types but the same properties, the tag type can be assigned to the second type parameter.


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