Iros
 
Loading...
Searching...
No Matches
di::NamedArgument< Tag_, T > Class Template Reference

A helper class to simulate a single named argument. More...

#include <di/util/named_arguments.h>

Inheritance diagram for di::NamedArgument< Tag_, T >:
[legend]

Public Types

using Tag = Tag_
 
using Type = T
 

Public Member Functions

 NamedArgument ()=default
 
template<typename... Args>
requires (concepts::ConstructibleFrom<T, Args...>)
constexpr NamedArgument (InPlace, Args &&... args)
 
template<typename U>
requires (!concepts::DecaySameAs<NamedArgument, U> && concepts::ConstructibleFrom<T, U>)
constexpr explicit (!concepts::ConvertibleTo< U, T >) NamedArgument(U &&value)
 
constexpr auto value () &-> T &
 
constexpr auto value () const &-> T const &
 
constexpr auto value () &&-> T &&
 
constexpr auto value () const &&-> T const &&
 

Static Public Attributes

static constexpr bool is_named_argument = true
 

Detailed Description

A helper class to simulate a single named argument.

Tag The tag type for the named argument.

T The type of the named argument.

This class models a single named argument, where the name is essentially the tag type. Typically, this class is used with CRTP, so the tag type is the derived class.

See also
NamedArguments

Member Typedef Documentation

◆ Tag

template<typename Tag_, typename T>
using di::util::NamedArgument< Tag_, T >::Tag = Tag_

◆ Type

template<typename Tag_, typename T>
using di::util::NamedArgument< Tag_, T >::Type = T

Constructor & Destructor Documentation

◆ NamedArgument() [1/2]

template<typename Tag_, typename T>
di::util::NamedArgument< Tag_, T >::NamedArgument ( )
explicitdefault

◆ NamedArgument() [2/2]

template<typename Tag_, typename T>
template<typename... Args>
requires (concepts::ConstructibleFrom<T, Args...>)
di::util::NamedArgument< Tag_, T >::NamedArgument ( InPlace ,
Args &&... args )
inlineexplicitconstexpr

Member Function Documentation

◆ explicit()

template<typename Tag_, typename T>
template<typename U>
requires (!concepts::DecaySameAs<NamedArgument, U> && concepts::ConstructibleFrom<T, U>)
di::util::NamedArgument< Tag_, T >::explicit ( !concepts::ConvertibleTo< U, T > ) &&
inlineconstexpr

◆ value() [1/4]

template<typename Tag_, typename T>
auto di::util::NamedArgument< Tag_, T >::value ( ) && -> T&&
inlineconstexpr

◆ value() [2/4]

template<typename Tag_, typename T>
auto di::util::NamedArgument< Tag_, T >::value ( ) & -> T&
inlineconstexpr

◆ value() [3/4]

template<typename Tag_, typename T>
auto di::util::NamedArgument< Tag_, T >::value ( ) const && -> T const&&
inlineconstexpr

◆ value() [4/4]

template<typename Tag_, typename T>
auto di::util::NamedArgument< Tag_, T >::value ( ) const & -> T const&
inlineconstexpr

Member Data Documentation

◆ is_named_argument

template<typename Tag_, typename T>
bool di::util::NamedArgument< Tag_, T >::is_named_argument = true
staticconstexpr

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