@@ -71,7 +71,7 @@ class demote_promote_writer_readers_lock
7171 return oldState & preemptedMask;
7272 };
7373
74- perform_under_locked_state (std::move ( success) , preemptionCheck);
74+ perform_under_locked_state (success, preemptionCheck);
7575 }
7676
7777 /* *
@@ -92,7 +92,7 @@ class demote_promote_writer_readers_lock
9292 return (oldState & currentReadersMask) && !(oldState & writingMask);
9393 };
9494
95- perform_under_locked_state (std::move ( success), defaultPreemptionCheck , sanityChecks);
95+ perform_under_locked_state (success, DefaultPreemptionCheck () , sanityChecks);
9696 }
9797
9898 /* *
@@ -133,7 +133,7 @@ class demote_promote_writer_readers_lock
133133 return preemptedState;
134134 };
135135
136- perform_under_locked_state (std::move ( success) , preemptionCheck, defaultSanityChecks, preempted);
136+ perform_under_locked_state (success, preemptionCheck, defaultSanityChecks, preempted);
137137 }
138138
139139 /* *
@@ -154,7 +154,7 @@ class demote_promote_writer_readers_lock
154154 return (oldState & writingMask) && !(oldState & currentReadersMask);
155155 };
156156
157- perform_under_locked_state (std::move ( success), defaultPreemptionCheck , sanityChecks);
157+ perform_under_locked_state (success, DefaultPreemptionCheck () , sanityChecks);
158158 }
159159
160160 /* *
@@ -206,7 +206,7 @@ class demote_promote_writer_readers_lock
206206 return preemptedState;
207207 };
208208
209- perform_under_locked_state (std::move ( success) , preemptionCheck, sanityChecks, preempted);
209+ perform_under_locked_state (success, preemptionCheck, sanityChecks, preempted);
210210 }
211211
212212 /* *
@@ -229,19 +229,26 @@ class demote_promote_writer_readers_lock
229229 return (oldState & writingMask) && !(oldState & currentReadersMask);
230230 };
231231
232- perform_under_locked_state (std::move ( success), defaultPreemptionCheck , sanityChecks);
232+ perform_under_locked_state (success, DefaultPreemptionCheck () , sanityChecks);
233233 }
234234
235235private:
236236
237- constexpr static auto defaultPreemptionCheck = [](const state_lock_value_t oldState) -> bool {return false ; };
237+ struct DefaultPreemptionCheck
238+ {
239+ bool operator ()(state_lock_value_t oldState)
240+ {
241+ return false ;
242+ }
243+ };
244+
238245 constexpr static auto defaultPreempted = [](const state_lock_value_t oldState)->state_lock_value_t {return oldState; };
239246 constexpr static auto defaultSanityChecks = [](const state_lock_value_t oldState)->bool {return true ; };
240247
241- template <typename Success, typename PreemptionCheck = decltype (defaultPreemptionCheck) , typename SanityChecks = decltype (defaultSanityChecks), typename Preempted = decltype (defaultPreempted)>
248+ template <typename Success, typename PreemptionCheck = DefaultPreemptionCheck , typename SanityChecks = decltype (defaultSanityChecks), typename Preempted = decltype (defaultPreempted)>
242249 inline void perform_under_locked_state (
243250 Success&& success,
244- PreemptionCheck& preemptionCheck = defaultPreemptionCheck ,
251+ PreemptionCheck&& preemptionCheck = DefaultPreemptionCheck() ,
245252 SanityChecks& sanityChecks = defaultSanityChecks,
246253 Preempted& preempted = defaultPreempted
247254 )
0 commit comments