@@ -145,8 +145,10 @@ struct FunctorTraitsImpl {
145145 BoundArgumentsTupleType&& bound_arguments,
146146 RunArgumentTypes&&... run_arguments) {
147147 return std::invoke (std::forward<Functor>(functor),
148+ // NOLINTBEGIN(bugprone-use-after-move)
148149 std::get<Indexes>(std::forward<BoundArgumentsTupleType>(
149150 bound_arguments))...,
151+ // NOLINTEND(bugprone-use-after-move)
150152 std::forward<RunArgumentTypes>(run_arguments)...);
151153 }
152154};
@@ -175,29 +177,30 @@ struct FunctorTraits<ReturnType (*)(ArgumentTypes...)>
175177 sizeof ...(ArgumentTypes)> {};
176178
177179// Member functions
178- #define LIBBASE_IMPL_MEMBER_FUNCTION_TRAIT (INSTANCE_TYPE, ...) \
179- template <typename ReturnType, typename ClassType, \
180- typename ... ArgumentTypes> \
181- struct FunctorTraits <ReturnType (ClassType::*)(ArgumentTypes...) \
182- __VA_ARGS__> \
183- : FunctorTraitsImpl<ReturnType, \
184- std::tuple<INSTANCE_TYPE*, ArgumentTypes...>, \
185- 1 + sizeof ...(ArgumentTypes)> { \
186- template <typename Functor, \
187- std::size_t ... Indexes, \
188- typename BoundArgumentsTupleType, \
189- typename ... RunArgumentTypes> \
190- static constexpr decltype (auto ) Invoke( \
191- Functor&& functor, \
192- std::index_sequence<Indexes...>, \
193- BoundArgumentsTupleType&& bound_arguments, \
194- RunArgumentTypes&&... run_arguments) { \
195- return MemberFunctionInvoke ( \
196- std::forward<Functor>(functor), \
197- std::get<Indexes>( \
198- std::forward<BoundArgumentsTupleType>(bound_arguments))..., \
199- std::forward<RunArgumentTypes>(run_arguments)...); \
200- } \
180+ #define LIBBASE_IMPL_MEMBER_FUNCTION_TRAIT (INSTANCE_TYPE, ...) \
181+ template <typename ReturnType, typename ClassType, \
182+ typename ... ArgumentTypes> \
183+ struct FunctorTraits <ReturnType (ClassType::*)(ArgumentTypes...) \
184+ __VA_ARGS__> \
185+ : FunctorTraitsImpl<ReturnType, \
186+ std::tuple<INSTANCE_TYPE*, ArgumentTypes...>, \
187+ 1 + sizeof ...(ArgumentTypes)> { \
188+ template <typename Functor, \
189+ std::size_t ... Indexes, \
190+ typename BoundArgumentsTupleType, \
191+ typename ... RunArgumentTypes> \
192+ static constexpr decltype (auto ) Invoke( \
193+ Functor&& functor, \
194+ std::index_sequence<Indexes...>, \
195+ BoundArgumentsTupleType&& bound_arguments, \
196+ RunArgumentTypes&&... run_arguments) { \
197+ return MemberFunctionInvoke ( \
198+ std::forward<Functor>( \
199+ functor), /* NOLINTBEGIN(bugprone-use-after-move) */ \
200+ std::get<Indexes>(std::forward<BoundArgumentsTupleType>( \
201+ bound_arguments))..., /* NOLINTEND(bugprone-use-after-move) */ \
202+ std::forward<RunArgumentTypes>(run_arguments)...); \
203+ } \
201204 }
202205
203206LIBBASE_IMPL_MEMBER_FUNCTION_TRAIT (ClassType, );
@@ -243,8 +246,10 @@ struct FunctorTraits<OnceCallback<ReturnType(ArgumentTypes...)>>
243246 BoundArgumentsTupleType&& bound_arguments,
244247 RunArgumentTypes&&... run_arguments) {
245248 return std::forward<Functor>(functor).Run (
249+ // NOLINTBEGIN(bugprone-use-after-move)
246250 std::get<Indexes>(
247251 std::forward<BoundArgumentsTupleType>(bound_arguments))...,
252+ // NOLINTEND(bugprone-use-after-move)
248253 std::forward<RunArgumentTypes>(run_arguments)...);
249254 }
250255};
0 commit comments