36 imstkNew() : object(std::make_shared<T>()) { }
38 template<
typename ... Args>
39 explicit imstkNew(Args&& ... args) : object(std::make_shared<T>(std::forward<Args>(args) ...)) { }
42 imstkNew(imstkNew&& obj) : object(obj.object) { obj.object =
nullptr; }
45 T* operator->()
const {
return object.get(); }
46 T& operator*()
const {
return *
object.get(); }
51 T*
getPtr()
const {
return object.get(); }
56 const std::shared_ptr<T>&
get()
const {
return object; }
61 operator std::shared_ptr<T>()
const {
return object; }
66 operator std::weak_ptr<T>()
const {
return object; }
73 operator std::shared_ptr<U>()
const 75 static_assert(std::is_base_of<U, T>::value,
"Argument U type not compatible with imstkNew<T>'s T");
76 return std::dynamic_pointer_cast<U>(object);
84 operator std::weak_ptr<U>()
const 86 static_assert(std::is_base_of<U, T>::value,
"Argument U type not compatible with imstkNew<T>'s T");
87 return std::dynamic_pointer_cast<U>(object);
93 std::shared_ptr<T> object;
std::shared_ptr<T> obj = std::make_shared<T>(); equivalent, convenience class for STL shared allocati...
T * getPtr() const
Returns the raw pointer.