Mercurial > irccd
changeset 838:eda721611955
irccd: use std::invoke in plugin_service::exec
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 26 Apr 2019 20:52:00 +0200 |
parents | eeb0bc58cd76 |
children | e7709755e557 |
files | libirccd-daemon/irccd/daemon/plugin_service.hpp |
diffstat | 1 files changed, 2 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd-daemon/irccd/daemon/plugin_service.hpp Fri Apr 26 20:47:08 2019 +0200 +++ b/libirccd-daemon/irccd/daemon/plugin_service.hpp Fri Apr 26 20:52:00 2019 +0200 @@ -210,13 +210,12 @@ * \param args the arguments to pass */ template <typename Func, typename... Args> - void exec(std::shared_ptr<plugin> plugin, Func fn, Args&&... args) + void exec(std::shared_ptr<plugin> plugin, Func&& fn, Args&&... args) { assert(plugin); - // TODO: replace with C++17 std::invoke. try { - ((*plugin).*(fn))(std::forward<Args>(args)...); + std::invoke(std::forward<Func>(fn), *plugin, std::forward<Args>(args)...); } catch (const std::exception& ex) { throw plugin_error(plugin_error::exec_error, plugin->get_name(), ex.what()); } catch (...) {