1 #ifndef cetlib_exempt_ptr_h 2 #define cetlib_exempt_ptr_h 37 template <
class Element>
53 constexpr
bool operator==(
exempt_ptr<E>,
std::nullptr_t) noexcept;
56 constexpr
bool operator!=(
exempt_ptr<E>,
std::nullptr_t) noexcept;
59 constexpr
bool operator==(
std::nullptr_t,
exempt_ptr<E>) noexcept;
62 constexpr
bool operator!=(
std::nullptr_t,
exempt_ptr<E>) noexcept;
79 template <class Element>
84 using pointer = std::add_pointer_t<Element>;
85 using reference = std::add_lvalue_reference_t<Element>;
90 :
public std::is_convertible<std::add_pointer_t<P>, pointer> {};
106 std::enable_if_t<is_compatible_v<E2>>* =
nullptr) noexcept
115 std::enable_if_t<is_compatible_v<E2>>* =
nullptr) noexcept
120 constexpr exempt_ptr&
operator=(std::nullptr_t) noexcept
127 constexpr std::enable_if_t<is_compatible_v<E2>, exempt_ptr&>
137 constexpr std::enable_if_t<is_compatible_v<E2>, exempt_ptr&>
155 return get() ==
nullptr;
213 return x.get() ==
y.get();
258 using CT = std::common_type_t<typename exempt_ptr<E>::pointer,
260 return std::less<CT>{}(x.get(),
y.get());
constexpr exempt_ptr(exempt_ptr< E2 > const other, std::enable_if_t< is_compatible_v< E2 >> *=nullptr) noexcept
constexpr pointer operator->() const noexcept
constexpr bool operator>=(exempt_ptr< E >, exempt_ptr< E >)
constexpr pointer release() noexcept
constexpr pointer get() const noexcept
constexpr void reset(pointer t=nullptr) noexcept
constexpr bool empty() const noexcept
constexpr reference operator*() const noexcept
constexpr exempt_ptr(E2 *other, std::enable_if_t< is_compatible_v< E2 >> *=nullptr) noexcept
std::add_pointer_t< art::HLTGlobalStatus > pointer
constexpr exempt_ptr(pointer other) noexcept
QTextStream & reset(QTextStream &s)
constexpr exempt_ptr< E > make_exempt_ptr(E *) noexcept
constexpr exempt_ptr(std::nullptr_t) noexcept
constexpr bool operator==(exempt_ptr< E >, exempt_ptr< E >) noexcept
constexpr bool operator>(exempt_ptr< E >, exempt_ptr< E >)
void swap(exempt_ptr< E > &, exempt_ptr< E > &) noexcept
constexpr bool operator!=(exempt_ptr< E >, exempt_ptr< E >) noexcept
constexpr exempt_ptr & operator=(std::nullptr_t) noexcept
constexpr std::enable_if_t< is_compatible_v< E2 >, exempt_ptr & > operator=(E2 *other) noexcept
std::add_lvalue_reference_t< art::HLTGlobalStatus > reference
constexpr std::enable_if_t< is_compatible_v< E2 >, exempt_ptr & > operator=(exempt_ptr< E2 > const other) noexcept
void swap(exempt_ptr &other) noexcept
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
constexpr exempt_ptr() noexcept