我可以强制使用可变参数模板来获取特定类型的参数

lul*_*eta 4 c++ templates variadic-templates

在C++模板中有一个名为显式模板参数规范的概念,这意味着我可以强制编译器创建给定类型的模板函数.例如

template <class T1, class T2>

void foo(T1 t1prm, T2 t2prm) {
    /* function body */
}

foo<double, double>(1,2); 
Run Code Online (Sandbox Code Playgroud)


我可以使用可变参数模板函数做类似的事情吗?我没有特定的用例.Variadic模板对我来说是新的,我只是想了解新(对我来说)概念的功能.

For*_*veR 6

是.

template<typename... Args>
void f(const Args&... args)
{
}

int main()
{
   f<int>(1.0, 2, 3.0);
}
Run Code Online (Sandbox Code Playgroud)

这里将被称为功能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)...};
}
Run Code Online (Sandbox Code Playgroud)