diff --git a/vtkm/cont/StorageVirtual.h b/vtkm/cont/StorageVirtual.h index 3d37bec6f..349fc6c3d 100644 --- a/vtkm/cont/StorageVirtual.h +++ b/vtkm/cont/StorageVirtual.h @@ -33,7 +33,6 @@ class VTKM_ALWAYS_EXPORT ArrayPortalRef : public vtkm::ArrayPortalRef public: ArrayPortalRef() = default; - ~ArrayPortalRef() = default; ArrayPortalRef(std::shared_ptr> portal, vtkm::Id numValues) noexcept : vtkm::ArrayPortalRef(portal.get(), numValues), diff --git a/vtkm/filter/FieldSelection.h b/vtkm/filter/FieldSelection.h index 90518cff1..17e1f6abc 100644 --- a/vtkm/filter/FieldSelection.h +++ b/vtkm/filter/FieldSelection.h @@ -131,8 +131,32 @@ public: } } - VTKM_CONT - ~FieldSelection() {} + // Normally the default compiler construction of each of these would be fine, + // but we don't want any of them compiled for devices (like CUDA), so we have + // to explicitly mark them as VTKM_CONT. + VTKM_CONT FieldSelection(const FieldSelection& src) + : Mode(src.Mode) + , Fields(src.Fields) + { + } + VTKM_CONT FieldSelection(FieldSelection&& rhs) + : Mode(rhs.Mode) + , Fields(std::move(rhs.Fields)) + { + } + VTKM_CONT FieldSelection& operator=(const FieldSelection& src) + { + this->Mode = src.Mode; + this->Fields = src.Fields; + return *this; + } + VTKM_CONT FieldSelection& operator=(FieldSelection&& rhs) + { + this->Mode = rhs.Mode; + this->Fields = std::move(rhs.Fields); + return *this; + } + VTKM_CONT ~FieldSelection() {} /// Returns true if the input field should be mapped to the output /// dataset.