【发布时间】:2015-12-30 15:39:23
【问题描述】:
这么简单的问题。
template<class InputIt, class Size, class OutputIt>
OutputIt copy_n(InputIt first, Size count, OutputIt result);
为什么std::copy_n 使用类型来表示要复制的元素数量,而不是简单的std::size_t?我就是想不出理由。
template<class InputIt, class OutputIt>
OutputIt copy_n(InputIt first, std::size_t count, OutputIt result);
【问题讨论】:
-
假设如果开发者突然调用那个函数,参数计数是
signed int并且它有负值,如果count是std::size_t,它会做积分提升,那么我们会收到未定义的行为。 -
一个明显的情况是所需的大小可能大于
size_t的最大值