XRootD
XrdCl::Optional< T > Class Template Reference

#include <XrdClOptional.hh>

+ Collaboration diagram for XrdCl::Optional< T >:

Public Member Functions

 Optional (const None &n=none)
 Default constructor. More...
 
 Optional (const Optional &opt)
 Copy constructor. More...
 
 Optional (const T &t)
 Constructor for value. More...
 
 Optional (Optional &&opt)
 Move constructor. More...
 
 ~Optional ()
 
 operator bool () const
 Conversion to boolean. More...
 
T & operator* ()
 Dereference operator. More...
 
const T & operator* () const
 Dereference operator. More...
 
Optionaloperator= (const Optional &opt)
 Copy assignment operator. More...
 
Optionaloperator= (Optional &&opt)
 Move assignment operator. More...
 

Detailed Description

template<typename T>
class XrdCl::Optional< T >

The Optional class

  • T : type of the optional parameter

Definition at line 43 of file XrdClOptional.hh.

Constructor & Destructor Documentation

◆ Optional() [1/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const T &  t)
inline

Constructor for value.

Definition at line 50 of file XrdClOptional.hh.

50  : optional( false )
51  {
52  new( &memory.value ) T( t );
53  }

◆ Optional() [2/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const None n = none)
inline

Default constructor.

Definition at line 58 of file XrdClOptional.hh.

58  : optional( true )
59  {
60  (void)n;
61  }

◆ Optional() [3/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const Optional< T > &  opt)
inline

Copy constructor.

Definition at line 66 of file XrdClOptional.hh.

66  : optional( opt.optional )
67  {
68  if( !optional ) new( &memory.value ) T( opt.memory.value );
69  }

◆ Optional() [4/4]

template<typename T >
XrdCl::Optional< T >::Optional ( Optional< T > &&  opt)
inline

Move constructor.

Definition at line 74 of file XrdClOptional.hh.

74  : optional( opt.optional )
75  {
76  if( !optional ) new( &memory.value ) T( std::move( opt.memory.value ) );
77  }

◆ ~Optional()

template<typename T >
XrdCl::Optional< T >::~Optional ( )
inline

Definition at line 82 of file XrdClOptional.hh.

83  {
84  if( optional ) memory.value.~T();
85  }

Member Function Documentation

◆ operator bool()

template<typename T >
XrdCl::Optional< T >::operator bool ( ) const
inline

Conversion to boolean.

Definition at line 116 of file XrdClOptional.hh.

117  {
118  return optional;
119  }

◆ operator*() [1/2]

template<typename T >
T& XrdCl::Optional< T >::operator* ( )
inline

Dereference operator.

Definition at line 124 of file XrdClOptional.hh.

125  {
126  return memory.value;
127  }

◆ operator*() [2/2]

template<typename T >
const T& XrdCl::Optional< T >::operator* ( ) const
inline

Dereference operator.

Definition at line 132 of file XrdClOptional.hh.

133  {
134  return memory.value;
135  }

◆ operator=() [1/2]

template<typename T >
Optional& XrdCl::Optional< T >::operator= ( const Optional< T > &  opt)
inline

Copy assignment operator.

Definition at line 90 of file XrdClOptional.hh.

91  {
92  if( this != &opt )
93  {
94  optional = opt.optional;
95  if( !optional ) memory.value = opt.memory.value;
96  }
97  return *this;
98  }

◆ operator=() [2/2]

template<typename T >
Optional& XrdCl::Optional< T >::operator= ( Optional< T > &&  opt)
inline

Move assignment operator.

Definition at line 103 of file XrdClOptional.hh.

104  {
105  if( this != &opt )
106  {
107  optional = opt.optional;
108  if( !optional ) memory.value = std::move( opt.memory.value );
109  }
110  return *this;
111  }

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