如何专门化嵌套模板?(见下面的错误.)
using std::reverse_iterator;
template<typename It>
reverse_iterator<It> make_reverse_iterator(const It &it)
{
return reverse_iterator<It>(it);
}
template<typename It>
It make_reverse_iterator<reverse_iterator<It> >(const reverse_iterator<It> &it)
{
// Above ^
// error C2768:
// 'make_reverse_iterator': illegal use of explicit template arguments
return it.base();
}
Run Code Online (Sandbox Code Playgroud)
这是函数模板的部分特化.这是不允许的.
您可以使用重载来解决此示例中的问题:
template<typename It>
It make_reverse_iterator(const reverse_iterator<It> &it)
{
return it.base();
}
Run Code Online (Sandbox Code Playgroud)
如果重载不起作用,您可以使用类模板的部分特化.