diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h index dd3488ee..507c320d 100644 --- a/include/libcamera/base/bound_method.h +++ b/include/libcamera/base/bound_method.h @@ -98,21 +98,15 @@ public: using PackType = BoundMethodPack; private: - template - std::enable_if_t::value, void> - invokePack(BoundMethodPackBase *pack, std::index_sequence) + template + void invokePack(BoundMethodPackBase *pack, std::index_sequence) { - PackType *args = static_cast(pack); - args->ret_ = invoke(std::get(args->args_)...); - } + [[maybe_unused]] auto *args = static_cast(pack); - template - std::enable_if_t::value, void> - invokePack(BoundMethodPackBase *pack, std::index_sequence) - { - /* args is effectively unused when the sequence I is empty. */ - PackType *args [[gnu::unused]] = static_cast(pack); - invoke(std::get(args->args_)...); + if constexpr (!std::is_void_v) + args->ret_ = invoke(std::get(args->args_)...); + else + invoke(std::get(args->args_)...); } public: