[英]How can the compiler differentiate between the following?
看看这个... http://en.cppreference.com/w/cpp/container/vector/insert编译器如何区分第三和第四,即是否要复制第三个副本所需的int或要填充的容器在提供的范围内。
// 3rd
iterator insert( const_iterator pos, size_type count, const T& value );
// 4th
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );
先感谢您。
这是编译器(或库编写器)的问题,而不是您的问题。 该标准说,如果InputIt
类型可以调用表格3,则其行为应类似于已调用表格3。 通常,使用某种形式的模板元编程,以便InputIt
迭代器的模板函数将转发到两个不同的函数,这些函数由重载分辨率根据InputIt
是否可以隐式转换为size_type
(C ++ 03)来选择,或InputIt
是否将是合法的迭代器(C ++ 11)。
iterator
和const_iterator
根本不是同一类。 这样,编译器就可以毫无疑问地推断出必须使用哪个重载版本。
编辑:第四个版本中的第二个和最后一个参数必须相同,并且必须遵循InputIterator
的概念。 不是 size_t的情况,没有歧义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.