diff --git a/include/openPMD/snapshots/RandomAccessIterator.hpp b/include/openPMD/snapshots/RandomAccessIterator.hpp index 06357063da..7a34d7cfcd 100644 --- a/include/openPMD/snapshots/RandomAccessIterator.hpp +++ b/include/openPMD/snapshots/RandomAccessIterator.hpp @@ -72,15 +72,14 @@ class RandomAccessIterator ~RandomAccessIterator() override; - RandomAccessIterator(RandomAccessIterator const &other) = default; + RandomAccessIterator(RandomAccessIterator const &other); RandomAccessIterator(RandomAccessIterator &&other) noexcept( - noexcept(iterator_t(std::declval()))) = default; + noexcept(iterator_t(std::declval()))); + RandomAccessIterator &operator=(RandomAccessIterator const &other); RandomAccessIterator & - operator=(RandomAccessIterator const &other) = default; - RandomAccessIterator &operator=(RandomAccessIterator &&other) noexcept( - noexcept(std::declval().operator=( - std::declval()))) = default; + operator=(RandomAccessIterator &&other) noexcept(noexcept( + std::declval().operator=(std::declval()))); auto operator*() -> value_type &; auto operator*() const -> value_type const &; diff --git a/src/auxiliary/UniquePtr.cpp b/src/auxiliary/UniquePtr.cpp index bc9af25ae1..6625ca3a47 100644 --- a/src/auxiliary/UniquePtr.cpp +++ b/src/auxiliary/UniquePtr.cpp @@ -65,6 +65,9 @@ namespace auxiliary } // namespace auxiliary template +#ifdef __HIPCC__ // ROCm 6.2.4 issue, see #1797 +__host__ +#endif UniquePtrWithLambda::UniquePtrWithLambda() = default; template diff --git a/src/backend/BaseRecord.cpp b/src/backend/BaseRecord.cpp index 68b182fbe7..37d6d7b126 100644 --- a/src/backend/BaseRecord.cpp +++ b/src/backend/BaseRecord.cpp @@ -56,6 +56,9 @@ namespace internal typename T_BaseRecord_, typename T_BaseRecordData_, typename T_BaseIterator> +#ifdef __HIPCC__ // ROCm 6.2.4 issue, see #1797 + __host__ +#endif ScalarIterator:: ScalarIterator() = default; diff --git a/src/snapshots/RandomAccessIterator.cpp b/src/snapshots/RandomAccessIterator.cpp index 904233904a..2c824a10d3 100644 --- a/src/snapshots/RandomAccessIterator.cpp +++ b/src/snapshots/RandomAccessIterator.cpp @@ -9,6 +9,33 @@ inline RandomAccessIterator::RandomAccessIterator(iterator_t it) template RandomAccessIterator::~RandomAccessIterator() = default; +template +#ifdef __HIPCC__ // ROCm 6.2.4 issue, see #1797 +__host__ +#endif +RandomAccessIterator::RandomAccessIterator( + RandomAccessIterator const &other) = default; + +template +#ifdef __HIPCC__ // ROCm 6.2.4 issue, see #1797 +__host__ +#endif +RandomAccessIterator::RandomAccessIterator( + RandomAccessIterator + &&other) noexcept(noexcept(iterator_t(std::declval()))) = + default; + +template +RandomAccessIterator &RandomAccessIterator::operator=( + RandomAccessIterator const &other) = default; + +template +RandomAccessIterator &RandomAccessIterator::operator=( + RandomAccessIterator + &&other) noexcept(noexcept(std::declval(). + operator=(std::declval()))) = + default; + template auto RandomAccessIterator::operator*() -> value_type & {