首頁 > 後端開發 > C++ > 如何將 istream_iterator(cin) 解釋為「最令人煩惱的解析」中的型別?

如何將 istream_iterator(cin) 解釋為「最令人煩惱的解析」中的型別?

Mary-Kate Olsen
發布: 2024-12-17 01:51:24
原創
908 人瀏覽過

How Can `istream_iterator(cin)` Be Interpreted as a Type in the

函數宣告中括號的歧義

在「最麻煩的解析」現像中,使用範本時會出現歧義。解析函數宣告時就會出現這樣的一個實例。考慮以下行:

vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
登入後複製

該行可以解釋為函數宣告或變數宣告。問題是,如何將第一個臨時迭代器解釋為類型?

與直覺相反,istream_iterator(cin) 不是函數宣告。相反,它是一個創建 istream_iterator 的臨時實例的表達式。使用輸入流 cin 進行初始化。 cin 周圍多餘的括號不會改變這種解釋。

這種特殊的語法是從 C 繼承的,在 C 語言中,這種括號也被認為是錯誤。在這種情況下,括號不會影響表達式的含義。它只是充當不必要的噪音,導致混亂。

總之,給定行中的第一個臨時迭代器表示類型 istream_iterator,而 cin 周圍的括號只是多餘的。但是,應謹慎使用這種不明確的語法,以避免潛在的誤解。

以上是如何將 istream_iterator(cin) 解釋為「最令人煩惱的解析」中的型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板