繁体   English   中英

编译器如何区分以下内容?

[英]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)。

iteratorconst_iterator根本不是同一类。 这样,编译器就可以毫无疑问地推断出必须使用哪个重载版本。

编辑:第四个版本中的第二个和最后一个参数必须相同,并且必须遵循InputIterator的概念。 不是 size_t的情况,没有歧义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM