2012-04-08 81 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));