![](/img/trans.png)
[英]When not to use auto as described in Bjarne Stroustrup book: A Tour of C++
[英]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.