【发布时间】:2021-08-05 11:20:40
【问题描述】:
#include <iostream>
template<typename... Args>
void print(Args const&... args)
{
(std::cout << ... << args);
}
int main()
{
std::cout << 1 << 2 << 3 << std::endl; // ok
print(1, 2, 3); // ok
print(1, 2, 3, std::endl); // error! How to make it work?
}
如何将函数模板作为模板参数传递?
【问题讨论】:
-
如果您使用
print(1, 2, 3, std::endl<char, std::char_traits<char>>);,它会起作用,但您可能想要一种不必编写所有额外内容的方法。 -
棘手...我可能会退回到
'\n'(而不是std::endl)。 -
就像@Scheff'sCat 所说,使用
\n、print(1, 2, 3, '\n');,除非您绝对必须也刷新流。 -
这不是 template 参数。
标签: c++ templates c++17 overloading overload-resolution