【发布时间】:2019-07-25 05:42:23
【问题描述】:
假设我有一个函数write(ostream& s, T& val)
我可以在不同的数据上多次调用 write:
write(s, 5);
write(s, 2.5);
write(s, "abc");
相反,我想要一个可变参数列表,只需一次调用即可生成上述内容:
write(s, 5, 2.5, "abc");
我可以为单一类型做到这一点:
template<typename T, typename... Args>
void write(ostream& s, T first, Args... args) {
write(s, first);
write(s, args...);
}
有没有办法针对不同的类型实现这一点?
【问题讨论】:
-
此代码适用适用于不同类型。
-
另见godbolt.org/z/JwS-PX - 你的代码在行动;-)
-
这个代码帽不起作用是怎么回事?您是否收到编译器错误?还是没有给出预期的输出?你能提供一个完整的工作示例吗?
标签: c++ c++11 templates recursion variadic-templates