我遇到过这个函数签名
template<typename T>
template<typename FI>
void vector<T>::_M_assign_aux (FI first, FI last,std::forward_iterator_tag)
{}
是不是相当于这个?
template<typename T, typename FI>
void vector<T>::_M_assign_aux (FI first, FI last,std::forward_iterator_tag)
{}
有什么理由单独写吗?
最佳答案
_M_assign_aux
看起来像 vector<T>
的方法,所以这应该从这样的代码开始:
template<typename T>
class vector
{
// ...
template<typename FI>
void _M_assign_aux(FI first, FI last,std::forward_iterator_tag);
// ...
};
查看类声明,解释更“明显”:类有一个模板声明,方法有一个模板声明。
template<typename T> // template declaration for vector
template<typename FI> // template declaration for _M_assign_aux
void vector<T>::_M_assign_aux(FI first, FI last,std::forward_iterator_tag)
{
}
关于c++ - 奇怪的模板规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706559/