C 使用默认限制的迭代器创建一个空的std :: String

C++ using default-initialized iterators to create an empty std::string

本文关键字:一个 String std 创建 默认 迭代器      更新时间:2023-10-16

以下代码有效且定义明确?

auto start = std::string::const_iterator();
auto end = std::string::const_iterator();
auto output = std::string(start, end);

(预期输出是一个空字符串。(

根据cppreference.com(随机访问迭代器(,其中字符串迭代器是一个,符合双向迭代器的所有要求。

此外,双向迭代器符合前迭代符的所有要求。

最后,由于C 14,可以进行价值键入的迭代器,并将与所有其他类型的所有其他价值定位式迭代器进行比较:

一个价值限制的遗产透明术语的行为与 某些未指定的空容器的过去终结迭代器:它比较 等于相同的所有价值限制遗留术语 类型。

基于此,我相信至少在C 14。

相关文章: