15#ifndef dealii_smartpointer_h
16#define dealii_smartpointer_h
91template <
typename T,
typename P =
void>
170 operator T *()
const;
236 const std::string
id;
249template <
typename T,
typename P>
252 ,
id(typeid(P).name())
258template <
typename T,
typename P>
261 ,
id(typeid(P).name())
270template <
typename T,
typename P>
282template <
typename T,
typename P>
295template <
typename T,
typename P>
307template <
typename T,
typename P>
316template <
typename T,
typename P>
331template <
typename T,
typename P>
350template <
typename T,
typename P>
363 t =
static_cast<T *
>(tt);
371template <
typename T,
typename P>
383 t =
static_cast<T *
>(tt);
391template <
typename T,
typename P>
399template <
typename T,
typename P>
405 ExcMessage(
"The object pointed to is not valid anymore."));
411template <
typename T,
typename P>
417 ExcMessage(
"The object pointed to is not valid anymore."));
423template <
typename T,
typename P>
432template <
typename T,
typename P>
448template <
typename T,
typename P>
463template <
typename T,
typename P>
486template <
typename T,
typename P,
class Q>
502template <
typename T,
typename P>
518template <
typename T,
typename P>
void swap(SmartPointer< T, Q > &tt)
SmartPointer(const SmartPointer< T, P > &tt)
SmartPointer< T, P > & operator=(const SmartPointer< T, P > &tt)
std::atomic< bool > pointed_to_object_is_alive
SmartPointer(const SmartPointer< T, Q > &tt)
std::size_t memory_consumption() const
SmartPointer< T, P > & operator=(const SmartPointer< T, Q > &tt)
SmartPointer(T *t, const std::string &id)
SmartPointer< T, P > & operator=(T *tt)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
static ::ExceptionBase & ExcNotInitialized()
static ::ExceptionBase & ExcMessage(std::string arg1)
void swap(SmartPointer< T, P > &t1, SmartPointer< T, Q > &t2)