Public Types | Public Member Functions | Private Attributes | Friends | List of all members
cet::propagate_const< T > Class Template Reference

#include <propagate_const.h>

Public Types

using element_type = typename std::remove_reference< decltype(*std::declval< T & >())>::type
 

Public Member Functions

 propagate_const ()=default
 
 propagate_const (propagate_const< T > &&)=default
 
 propagate_const (propagate_const< T > const &)=delete
 
template<typename U >
 propagate_const (U &&iValue)
 
propagate_const< T > & operator= (propagate_const &&)=default
 
propagate_const< T > & operator= (propagate_const< T > const &)=delete
 
template<typename U >
propagate_constoperator= (U &&iValue)
 
element_type const * get () const
 
element_type const * operator-> () const
 
element_type const & operator* () const
 
 operator element_type const * () const
 
element_typeget ()
 
element_typeoperator-> ()
 
element_typeoperator* ()
 
 operator element_type * ()
 

Private Attributes

m_value
 

Friends

T & get_underlying (propagate_const< T > &)
 
T const & get_underlying (propagate_const< T > const &)
 

Detailed Description

template<typename T>
class cet::propagate_const< T >

Definition at line 34 of file propagate_const.h.

Member Typedef Documentation

template<typename T>
using cet::propagate_const< T >::element_type = typename std::remove_reference<decltype(*std::declval<T&>())>::type

Definition at line 49 of file propagate_const.h.

Constructor & Destructor Documentation

template<typename T>
cet::propagate_const< T >::propagate_const ( )
default
template<typename T>
cet::propagate_const< T >::propagate_const ( propagate_const< T > &&  )
default
template<typename T>
cet::propagate_const< T >::propagate_const ( propagate_const< T > const &  )
delete
template<typename T>
template<typename U >
cet::propagate_const< T >::propagate_const ( U &&  iValue)
inline

Definition at line 56 of file propagate_const.h.

56  : m_value(std::forward<U>(iValue))
57  {}

Member Function Documentation

template<typename T>
element_type const* cet::propagate_const< T >::get ( ) const
inline

Definition at line 72 of file propagate_const.h.

73  {
74  return &(*m_value);
75  }
template<typename T>
element_type* cet::propagate_const< T >::get ( )
inline

Definition at line 83 of file propagate_const.h.

84  {
85  return &(*m_value);
86  }
template<typename T>
cet::propagate_const< T >::operator element_type * ( )
inline

Definition at line 90 of file propagate_const.h.

90 { return this->get(); }
template<typename T>
cet::propagate_const< T >::operator element_type const * ( ) const
inline

Definition at line 79 of file propagate_const.h.

79 { return this->get(); }
template<typename T>
element_type const& cet::propagate_const< T >::operator* ( ) const
inline

Definition at line 77 of file propagate_const.h.

77 { return *m_value; }
template<typename T>
element_type& cet::propagate_const< T >::operator* ( )
inline

Definition at line 88 of file propagate_const.h.

88 { return *m_value; }
template<typename T>
element_type const* cet::propagate_const< T >::operator-> ( ) const
inline

Definition at line 76 of file propagate_const.h.

76 { return this->get(); }
template<typename T>
element_type* cet::propagate_const< T >::operator-> ( )
inline

Definition at line 87 of file propagate_const.h.

87 { return this->get(); }
template<typename T>
propagate_const<T>& cet::propagate_const< T >::operator= ( propagate_const< T > &&  )
default
template<typename T>
propagate_const<T>& cet::propagate_const< T >::operator= ( propagate_const< T > const &  )
delete
template<typename T>
template<typename U >
propagate_const& cet::propagate_const< T >::operator= ( U &&  iValue)
inline

Definition at line 64 of file propagate_const.h.

65  {
66  m_value = std::forward<U>(iValue);
67  return *this;
68  }

Friends And Related Function Documentation

template<typename T>
T& get_underlying ( propagate_const< T > &  iP)
friend

Definition at line 99 of file propagate_const.h.

100  {
101  return iP.m_value;
102  }
template<typename T>
T const& get_underlying ( propagate_const< T > const &  iP)
friend

Definition at line 105 of file propagate_const.h.

106  {
107  return iP.m_value;
108  }

Member Data Documentation

template<typename T>
T cet::propagate_const< T >::m_value
private

Definition at line 94 of file propagate_const.h.


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