Skip to content

Commit 0885da3

Browse files
committed
Fix MSVC compilation
1 parent 1ae8696 commit 0885da3

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

include/openPMD/auxiliary/Future.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ class DeferredComputation
5959
std::variant<detail::OneTimeTask<T>, detail::CachedValue<T>> m_task;
6060

6161
public:
62+
static constexpr bool noexcept_move =
63+
std::is_move_constructible_v<detail::OneTimeTask<T>> &&
64+
std::is_move_assignable_v<detail::OneTimeTask<T>> &&
65+
std::is_move_constructible_v<detail::CachedValue<T>> &&
66+
std::is_move_assignable_v<detail::CachedValue<T>>;
6267
/** Construct from a callable
6368
*
6469
* @param task The callable to execute
@@ -72,10 +77,11 @@ class DeferredComputation
7277

7378
explicit DeferredComputation();
7479

75-
DeferredComputation(DeferredComputation &&) noexcept;
80+
DeferredComputation(DeferredComputation &&) noexcept(noexcept_move);
7681
DeferredComputation(DeferredComputation const &) = delete;
7782

78-
auto operator=(DeferredComputation &&) noexcept -> DeferredComputation &;
83+
auto operator=(DeferredComputation &&) noexcept(noexcept_move)
84+
-> DeferredComputation &;
7985
auto operator=(DeferredComputation const &)
8086
-> DeferredComputation & = delete;
8187

src/auxiliary/Future.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ template <typename T>
5757
DeferredComputation<T>::DeferredComputation() = default;
5858

5959
template <typename T>
60-
DeferredComputation<T>::DeferredComputation(DeferredComputation &&) noexcept =
61-
default;
60+
DeferredComputation<T>::DeferredComputation(DeferredComputation &&) noexcept(
61+
noexcept_move) = default;
6262

6363
template <typename T>
64-
auto DeferredComputation<T>::operator=(DeferredComputation &&) noexcept
65-
-> DeferredComputation & = default;
64+
auto DeferredComputation<T>::operator=(DeferredComputation &&) noexcept(
65+
noexcept_move) -> DeferredComputation & = default;
6666

6767
template <typename T>
6868
DeferredComputation<T>::~DeferredComputation()

0 commit comments

Comments
 (0)