相关疑难解决方法(0)

在可变参数模板的上下文中,"..."标记的规则是什么?

在C++ 11中有像这样的可变参数模板:

template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args )
{
    return unique_ptr<T>(new T(std::forward<Args>(args)...));
}
Run Code Online (Sandbox Code Playgroud)

有一些好奇这个问题:表达std::forward<Args>(args)...同时使用Argsargs,但只有一个...令牌.此外,std::forward是一个非可变参数模板函数,只接受一个模板参数和一个参数.那个(大致)的语法规则是什么?如何概括?

另外:在函数实现中,省略号(...)位于感兴趣的表达式的末尾.有没有理由在模板参数列表和参数列表中省略号位于中间?

c++ variadic-templates c++11

96
推荐指数
2
解决办法
3566
查看次数

使用可变参数模板进行扩展

以下3个gun函数调用有什么区别?

template <class... Ts> void fun(Ts... vs) {
  gun(A<Ts...>::hun(vs)...);
  gun(A<Ts...>::hun(vs...));
  gun(A<Ts>::hun(vs)...);
}
Run Code Online (Sandbox Code Playgroud)

我对使用特定示例解释三个调用的答案感兴趣.

c++ templates variadic-templates c++11

36
推荐指数
2
解决办法
1835
查看次数

标签 统计

c++ ×2

c++11 ×2

variadic-templates ×2

templates ×1