最令人烦恼的解析中临时迭代器的令人困惑的情况
最令人烦恼的解析,C 中臭名昭著的解析歧义,带来了令人困惑的问题问题:如何将以下行解释为函数声明?
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
要理解这种奇怪的行为,我们必须深入研究最令人烦恼的解析的细节。第二个临时迭代器确实可以被解释为一种类型,即产生不带参数的迭代器的函数。然而,关键在于理解第一个临时迭代器的解释。
与第二个迭代器不同,第一个临时迭代器出现在括号内,并且缺乏明确的参数名称,令人困惑。这种非常规语法是 C 语言的遗留物,引发了这样的疑问:这个迭代器代表什么类型?
答案是 istream_iterator
最终,这段代码的令人困惑的本质源于它对这种过时语法的依赖。它声明第一个参数是 istream_iterator
以上是为什么 `vector v(istream_iterator(cin), istream_iterator());` 在 C 中声明一个函数?的详细内容。更多信息请关注PHP中文网其他相关文章!