我有一个类,让我们Sample
用可变参数模板参数来调用它。这个类包含一个函数run(Args... args)
。这个类还实现了一个调用这个函数的流操作符。
该类如下所示:
template<typename ...Args>
class Sample
{
void run(Args... args)
{
// do something
}
Sample& operator<<(const tuple<Args...>& args)
{
run(unpack_somehow(args)...);
return *this;
}
};
现在我想使用流运算符来连接多个调用,通过元组的大括号初始化传递参数:
void main()
{
Sample<int, string, int> s;
// doesn't work :(
s << {1, "msg", 2} << {1, "msg", 2};
}
我知道我可以只写make_tuple(1, "msg", 2)
并且它会工作,但我正在寻找一种不需要额外函数调用的解决方案,例如make_tuple
.
有没有办法实现这样一个功能,我可以在大括号中传递参数(或者通过重载逗号运算符通过逗号分隔)?