60using root_ptr = std::unique_ptr<T, root_deleter>;
66template <
typename T,
typename...
Args>
69 static_assert(std::is_base_of_v<TObject, T>,
70 "mist::hep::owned::make requires a TObject-derived type");
71 auto*
raw =
new T(std::forward<Args>(
args)...);
72 if constexpr (std::is_base_of_v<TH1, T>)
raw->SetDirectory(
nullptr);
83 static_assert(std::is_base_of_v<TObject, T>,
84 "mist::hep::owned::clone requires a TObject-derived type");
86 if constexpr (std::is_base_of_v<TH1, T>)
raw->SetDirectory(
nullptr);
98 static_assert(std::is_base_of_v<TObject, T>,
99 "mist::hep::owned::adopt requires a TObject-derived type");
101 if constexpr (std::is_base_of_v<TH1, T>)
raw->SetDirectory(
nullptr);
121 TH1::AddDirectory(
false);
scoped_directory_off & operator=(const scoped_directory_off &)=delete
~scoped_directory_off()
Definition owned.h:123
scoped_directory_off()
Definition owned.h:119
scoped_directory_off(const scoped_directory_off &)=delete
scoped_directory_off & operator=(scoped_directory_off &&)=delete
scoped_directory_off(scoped_directory_off &&)=delete
root_ptr< T > clone(const T &source)
Definition owned.h:81
std::unique_ptr< T, root_deleter > root_ptr
Definition owned.h:60
root_ptr< T > adopt(T *raw)
Definition owned.h:96
root_ptr< T > make(Args &&... args)
Definition owned.h:67
void operator()(TObject *object) const noexcept
Definition owned.h:49