165 #include <type_traits>
167 VTK_ABI_NAMESPACE_BEGIN
174 template <
typename U>
176 template <
typename U>
178 template <
typename U>
185 template <
typename U = T>
186 static void CheckTypes() noexcept
189 "vtkNew<T>'s T type has not been defined. Missing include?");
191 "Cannot store an object with undefined type in "
192 "vtkNew. Missing include?");
194 "Argument type is not compatible with vtkNew<T>'s "
197 "vtkNew can only be used with subclasses of vtkObjectBase.");
207 vtkNew::CheckTypes();
221 template <
typename U>
225 vtkNew::CheckTypes<U>();
263 operator T*()
const noexcept {
return static_cast<T*
>(this->
Object); }
279 this->
Object = other.Object;
280 other.Object =
nullptr;
290 VTK_ABI_NAMESPACE_END
Allocate and hold a VTK object.
void Reset()
Deletes reference to instance of T.
T & operator*() const noexcept
Dereference the pointer and return a reference to the contained object.
vtkNew()
Create a new T on construction.
T * Get() const noexcept
Get a raw pointer to the contained object.
vtkNew(vtkNew &&o) noexcept
Move the object into the constructed vtkNew wrapper, stealing its reference.
T * GetPointer() const noexcept
Get a raw pointer to the contained object.
~vtkNew()
Deletes reference to instance of T.
vtkNew(vtkNew< U > &&o) noexcept
Move the object into the constructed vtkNew wrapper, stealing its reference.
vtkNew< T > & operator=(vtkNew< T > &&other) noexcept
Move assignment operator.
T * operator->() const noexcept
Enable pointer-like dereference syntax.
abstract base class for most VTK objects
virtual void Delete()
Delete a VTK object.
Hold a reference to a vtkObjectBase instance.
a weak reference to a vtkObject.