Wayverb
forwarding_call.h
1 #pragma once
2 
3 namespace wayverb {
4 namespace combined {
5 
6 template <typename T>
7 class forwarding_call final {
8 public:
9  constexpr explicit forwarding_call(T& t)
10  : t_{&t} {}
11 
12  template <typename... Ts>
13  constexpr auto operator()(Ts&&... ts) const {
14  (*t_)(std::forward<Ts>(ts)...);
15  }
16 
17 private:
18  T* t_;
19 };
20 
21 template <typename T>
22 constexpr auto make_forwarding_call(T& t) {
23  return forwarding_call<T>{t};
24 }
25 
26 } // namespace combined
27 } // namespace wayverb
Definition: capsule_base.h:9
Definition: forwarding_call.h:7