Go to the documentation of this file. 1 #ifndef FWCore_Utilities_propagate_const_h
2 #define FWCore_Utilities_propagate_const_h
22 #include <type_traits>
45 using element_type =
typename std::remove_reference<decltype(*std::declval<T&>())>::
type;
59 m_value = std::forward<U>(iValue);
78 template <
typename Up>
83 template <
typename Up>
88 template <
typename Up>
93 template <
typename Up>
102 template <
typename T>
106 template <
typename T>
element_type const & operator*() const
T & get_underlying(propagate_const< T > &)
element_type const * get() const
propagate_const(U &&iValue)
propagate_const()=default
static constexpr const element_type * to_raw_pointer(const Up *u)
element_type const * operator->() const
static constexpr element_type * to_raw_pointer(Up *u)
propagate_const< T > & operator=(propagate_const &&)=default
static constexpr element_type * to_raw_pointer(Up &u)
static constexpr const element_type * to_raw_pointer(const Up &u)
element_type & operator*()
typename std::remove_reference< decltype(*std::declval< std::shared_ptr< TrackAnalysisAlgorithm > & >())>::type element_type
propagate_const & operator=(U &&iValue)
element_type * operator->()