![](/img/trans.png)
[英]Why does this const function return a non-const reference?
在這段代碼中,為什么 GetAutoRef和GetAutoRefJ的返回值的常量性不同, GetDecltypeAutoJ的返回值不是const? 如果通過J函數中的const this指針訪問, j不應該是 const 嗎? https://godbolt.org/z/3v4PKG5n3 ...
[英]Why does this const function return a non-const reference?
在這段代碼中,為什么 GetAutoRef和GetAutoRefJ的返回值的常量性不同, GetDecltypeAutoJ的返回值不是const? 如果通過J函數中的const this指針訪問, j不應該是 const 嗎? https://godbolt.org/z/3v4PKG5n3 ...
[英]decltype(auto) return type and lifetime issues
我只是在看一些具有以下粗略輪廓的代碼。 所以如果我這樣打電話 圍繞這個的一些問題是,如果f返回一個引用並且f通過移動語義獲得object的所有權,我們不會留下生命周期問題嗎? decltype(auto)返回的潛在問題是什么? 或者這樣更好 ...
[英]Why are adornment to auto allowed in the return type of a function
我一直認為使用auto作為返回類型的唯一形式如下: 我剛剛看到添加了 const 引用裝飾說明符的代碼。 整數值 = 42; 這個標准是C++嗎? 我認為您只能使用帶有關鍵字 auto only 的第一種形式,它會衰減,即刪除 cv 限定符和引用。 任何人都可以分享標准中存在的地方嗎? 這和做同樣事 ...
[英]error: use of 'decltype(auto) X before deduction of 'auto' (for generated lambda)
我正在嘗試使用帶有 decltype(auto) 的特殊生成成員 function 來確定 this-capturing lambda 的類型。 但是,編譯器拒絕為以下需要它的上下文確定 lambda 的類型,即使它是 declare before 。 我怎樣才能避免這個問題? 演示 產量: 和 ...
[英]Return element of pair with perfect forwarding
我想寫一個 function 來評估一些返回一對(可能作為引用,並且可能包含引用)並返回第二個元素的表達式,但它轉發引用而不是復制它們。 這是一個不太有效的例子:#include <utility> #include <type_traits> #include <io ...
[英]Why doesn't decltype(auto) return the address of the lvalue?
我有以下代碼 我本來期望 foo 的類型是 因為a是左值而 decltype(a) 是引用。 如果我做一件非常相似的事情,但用完美轉發 lambda 混淆它,我會得到不同的結果。 foo 的返回類型變為int& 誰能告訴我這里發生的事情的確切規則? ...
[英]What is the difference between returning auto&& and decltype(auto)?
我正在嘗試制作模板包裝器 function,它應該轉發參數和返回值。 而且我無法決定使用auto&&或decltype(auto)作為返回類型哪個更好。 我讀過 Scott Meyers 的文章並了解到與 auto 相比有必要返回decltype(auto) auto不去除 ref ...
[英]C++14 Function returns array of objects although copy constructor is deleted
從舊的 C++98 我知道,如果函數聲明/定義中沒有提到,則返回類型復制(按值),否則使用地址運算符“&”。 現在我正在使用 auto 和 decltype 的概念來讓編譯器確定返回類型。 在一個例子中,我寫了一個class A ,其中除了默認的 ctor 之外,其他任何 ctors 都被 ...
[英]Using decltype(auto) in C++ non-type template parameter
我正在為非類型模板參數學習 C++17 新特性decltype(auto) 。 我寫了一個簡單的代碼片段如下: 據我了解, Foo<42>應該與Foo<x>類型相同。 但是, static_assert語句使用 clang++、MSVC 19.27 進行編譯,但使用 G ...
[英]Does decltype(auto) make trailing return type obsolete?
關於尾隨返回類型、 auto返回類型推導和非常有用的decltype(auto)的問題和答案有很多很多。 但是由於我們有decltype(auto) ,所以我無法找到是否需要尾隨返回類型的答案。 是否存在尾隨返回類型可以解決的情況,其中decltype(auto)要么無法使用或不起作用(給出意外/ ...
[英]Correctly propagating a `decltype(auto)` variable from a function
(這是“ `decltype(auto)` 變量是否有任何實際用例的后續內容? ” ) 考慮以下場景 - 我想將函數f傳遞給另一個函數invoke_log_return ,它將: 調用f ; 打印一些東西到stdout ; 返回f的結果,避免不必要的復制/移動並允許復制省略。 ...
[英]Are there any realistic use cases for `decltype(auto)` variables?
從我的個人經驗和咨詢答案到諸如decltype(auto)的一些用途之類的問題? 我可以找到很多有用的decltype(auto)用例作為函數返回類型占位符 。 但是,我正在努力思考decltype(auto)變量的任何有效(即有用的,現實的,有價值的)用例。 想到的唯一可能性是存儲函 ...
[英]decltype(auto) type deduction: return x vs. return (x)
我正在查看有關C ++ 14語言擴展的isocpp.org常見問題解答 ,閱讀有關decltype(auto) : ... 注意: decltype(auto)主要用於推導轉發函數和類似包裝器的返回類型,如上所示,您希望類型完全“跟蹤”您正在調用的某個表達式。 但是,除此之外 ...