簡體   English   中英

C ++ 11“ auto”關鍵字是否完全檢索“ cv-qualifier”? 我有沖突樣本

[英]Does C++11 “auto” keyword retrieve “cv-qualifier” at all? I've got conflict samples

有人說“自動”不會檢索cv-qualifier,所以我做了一個實驗:

const int i = 0;
auto r1 = i;
auto& r2 = i;
r1 = 3;//ok
r2= 3;//compilation error

似乎在構造值時,cv-qualifier並不與新變量一起使用,而是與引用“&”一起使用,而cv-qualifier與它一起使用。 為什么會自動檢索“ cv-qualifier”呢?

在大多數情況下, auto扣除與模板扣除相同。 只是auto刪除所有cv -qualifiers,但是auto&保留引用類型的cv -qualifications。 如果auto&刪除了限定詞,您將能夠對const對象進行非const引用,這將是很糟糕的! 其工作原理與以下方法完全相同:

template <class T> deduce(T );
template <class T> deduce_ref(T& );

deduce(i);     // calls deduce<int>
deduce_ref(i); // calls deduce<int const>

由於r2是對const int的引用,因此您無法為其分配值。 但是r1只是i一個副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM