最佳答案
在 C + + 11中有这样的可变模板:
template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args )
{
return unique_ptr<T>(new T(std::forward<Args>(args)...));
}
这里有一些奇怪的地方: 表达式 std::forward<Args>(args)...
同时使用 Args
和 args
,但是只有一个 ...
标记。此外,std::forward
是一个非可变的模板函数,只有一个模板参数和一个参数。这个问题(大致)的语法规则是什么?它怎么能被推广呢?
另外: 在函数实现中,省略号(...
)位于感兴趣的表达式的末尾。在模板参数列表和参数列表中省略号位于中间是否有原因?