在 C++ 模板中有一个概念叫做显式模板参数规范,这意味着我可以强制编译器创建给定类型的模板函数。例如
template <class T1, class T2>
void foo(T1 t1prm, T2 t2prm) {
/* function body */
}
foo<double, double>(1,2);
我可以用可变模板函数做类似的事情吗?我没有特定的用例。 Variadic 模板对我来说是新的,我只是想了解新的(嗯,对我来说)概念的功能。
最佳答案
是的。
template<typename... Args>
void f(const Args&... args)
{
}
int main()
{
f<int>(1.0, 2, 3.0);
}
这里会调用函数f<int, int, double>
.
你可以这样检查
template<typename... Args>
void f(const Args&... args)
{
using swallow = int[];
(void)swallow{0, (std::cout << typeid(args).name() << std::endl, 0)...};
}
关于c++ - 我可以强制可变参数模板采用特定类型的参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962182/