簡體   English   中英

關於 Stroustrup C++ 書籍的 auto 和 {}-lists 問題

[英]auto and {}-lists question regarding Stroustrup C++ book

以下內容出現在 Stroustrup C++ 第 4 版中。 第 164 頁。

T v3 = f();
T v3 {f()}; // works if and only if the type of f() can be implicitly converted to a T

auto v3 = f(); // v3 is of some appropriate type

有沒有人舉例說明這些示例可能是什么類型的T

我對將函數分配給變量的理解如下:

void (*fptr)(void) = &f;

不幸的是,這不是 RHS f()的形式。 因此,我對上述示例的用例感到有些困惑。

謝謝

您沒有在此處分配 function 指針。 f()表示調用f()運算符並返回結果。 所以如果我們說f

int f() { return 42; }

那么對於

T v3 = f();

T必須是可以從int創建的東西。

T v3 {f()};

T必須是可以從int創建的東西,並且它也不能是縮小轉換。

auto v3 = f();

v3將有一個遵循模板參數推導規則的類型,在這種情況下是int 如果f要返回一個int& ,它仍然是一個int ,因為扣除規則不會創建引用。

涉及f()的分配處理的是f()的返回值,而不是 function f作為值。 因此,當f的返回類型為char時, T可以是int

暫無
暫無

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

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