例如如何刺穿 Wrapper::call_to_func 该参数列表 call_to_func 应该是 func
class A
{
void func(int, char, double);
};
template<class T>
class Wrapper
{
public:
void call_to_func(....)
{
m_t.func(....)
}
T m_t;
}
您可以将
call_to_func
制作为可变参数方法模板,并使用 std::forward
将参数完美转发给 func
:
#include <iostream>
class A {
public:
void func(int i, char c, double d) {
std::cout << "func" << " " << i << " " << c << " " << d << "\n";
}
};
template<class T>
class Wrapper {
public:
template <typename ... Ts>
void call_to_func(Ts ... args) {
m_t.func(std::forward<Ts>(args)...);
}
T m_t;
};
int main() {
Wrapper<A> w;
w.call_to_func(1, 'a', 2.3);
}