如何解决约束模板函数参数类型
有两个插入函数,定义如下
template<typename T,typename Allocator>
auto list<T,Allocator>::insert(iterator pos,size_t count,const T & value)->iterator
{
for (size_t i = 0; i < count; i++) {
pos = insert(pos,value);
}
return pos;
}
template<typename T,typename Allocator>
template<typename InputIt>
auto list<T,InputIt first,InputIt last) -> iterator
{
for (InputIt iter = first; iter != last; ++iter) {
pos = insert(pos,*iter);// Indirection operator ( * ) is applied to a nonpointer value.
}
return pos;
}
当T的类型为int时,下面调用insert会报错
list<int> l1;
l1.insert(l1.begin(),10,2);//cause error
因为第二个插入函数可以比第一个更准确地匹配(不需要转换)
有什么办法可以限制InputIt的类型?这个函数只有在InputIt中存在某个类型时才能匹配
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。