亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對const的右值引用有什么用嗎?

對const的右值引用有什么用嗎?

C++
繁星淼淼 2019-12-16 16:12:10
我想不是,但是我想確認。有什么用const Foo&&,Foo類類型在哪里?
查看完整描述

3 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我想不出可以直接使用的情況,但可以間接使用它:


template<class T>

void f(T const &x) {

  cout << "lvalue";

}

template<class T>

void f(T &&x) {

  cout << "rvalue";

}


template<class T>

void g(T &x) {

  f(T());

}


template<class T>

void h(T const &x) {

  g(x);

}

在T 克為T const的,所以?F的x是一個常量?&&。


可能會導致f發生編譯錯誤(當它試圖移動或使用對象時),但是f可以使用rvalue-ref,以便在不修改rvalue的情況下不能在lvalues上調用它(例如,太簡單了)以上示例)。



查看完整回答
反對 回復 2019-12-17
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

除了std :: ref之外,標準庫還出于相同目的在std :: as_const中使用const rvalue引用。


template <class T>

void as_const(const T&&) = delete;

獲取包裝值時,它還用作std :: optional中的返回值:


constexpr const T&& operator*() const&&;

constexpr const T&& value() const &&;

以及在std :: get中:


template <class T, class... Types>

constexpr const T&& get(const std::variant<Types...>&& v);

template< class T, class... Types >

constexpr const T&& get(const tuple<Types...>&& t) noexcept;

大概是為了在訪問包裝的值時保持值的類別以及包裝器的恒定性。


這對是否可以在包裝的對象上調用const rvalue ref限定函數有所不同。也就是說,我不知道const rvalue ref限定函數的任何用途。



查看完整回答
反對 回復 2019-12-17
  • 3 回答
  • 0 關注
  • 486 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號