2012-04-08 60 views
1

初始化一个容器,我们可以通过使用标准输入这样初始化一个容器双端队列:C++标准库:通过使用标准输入

deque<int> c((istream_iterator<int>(cin)),(istream_iterator<int>())); 

为“C++标准库”描述,额外的括号初始化参数是没有必要的。没有它们,c声明了一个返回类型为deque的函数。它的第一个参数的类型为istream_iterator,名称为cin,而其第二个未命名参数的类型为“函数不返回istream_iterator的参数”。代码

deque<int> c(istream_iterator<int>(cin),istream_iterator<int>()); 

但是额外的圆括号强制初始化程序不匹配声明的语法。 我不明白为什么额外的括号可以使初始化程序不匹配声明的语法。感谢很多。

回答

3

因为在C++标准定义的语法不接受这种形式为函数声明:

T name((U), (V));