Ed *_* S. 11

当您实际上没有在函数中使用该参数但不想破坏公共方法签名时.


Ale*_*lis 7

在Scott Meyers的"Effective C++,3rd edition",第47项中给出了定义函数但未命名参数的一种情况:

template<typename IterT, typename DistT>        
void doAdvance(IterT& iter, DistT d,            
               std::random_access_iterator_tag) 
{
  iter += d;
}
Run Code Online (Sandbox Code Playgroud)

用于:

template<typename IterT, typename DistT>
void advance(IterT& iter, DistT d)
{
  doAdvance( iter, d, 
             typename std::iterator_traits<IterT>::iterator_category() );
}
Run Code Online (Sandbox Code Playgroud)

实质上,doAdvance中的第三个参数是一个没有变量名称的类型,即它是一个未命名的参数.具有未命名的参数不是问题,因为该参数仅在解析使用的重载函数期间使用.我在这个相关的SO问题中讨论这些主题.