[英]Bind temporary rvalue to reference lvalue in std::vector constructors
到目前為止,我認為我們不能將臨時右值傳遞給左值引用。 但是就在最近,我仔細研究了std :: vector的fill構造函數:
explicit vector (size_type n, const value_type& val = value_type(),
const allocator_type& alloc = allocator_type());
在我的理解中, const value_type& val
是一個引用左值,而= value_type()
是一個匿名右值。 為什么可能呢? 臨時右值是否會立即被銷毀,以便引用沒有指向?
該標准的相關部分在[class.temporary]中( §12.2/5
):
在函數調用(5.2.2)中,綁定到參考參數的臨時綁定將一直持續到包含該調用的完整表達式完成。
因此,臨時value_type()
將綁定到val
,並將在構造函數期間持續存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.