1
我想我缺少一些基本的左值到右值標準轉換。C++ 11左值到右值的轉換?
從C++ 11 4.1:
非功能的glvalue,非陣列類型T可以被轉換爲一個prvalue
所以我們聲明一個變量x
:
int x = 42;
在這個範圍內的表達式x
現在是一個左值(所以也是一個glvalue)。它滿足4.1中對左值到右值轉換的要求。
上下文中將左值到右值轉換應用於表達式x
的典型示例是什麼?
我想我缺少一些基本的左值到右值標準轉換。C++ 11左值到右值的轉換?
從C++ 11 4.1:
非功能的glvalue,非陣列類型T可以被轉換爲一個prvalue
所以我們聲明一個變量x
:
int x = 42;
在這個範圍內的表達式x
現在是一個左值(所以也是一個glvalue)。它滿足4.1中對左值到右值轉換的要求。
上下文中將左值到右值轉換應用於表達式x
的典型示例是什麼?
prvalue(「純」右值)是標識臨時對象(或其子對象)的表達式,或者是與任何對象無關的值。
struct Bar
{
int foo()
{
int x = 42;
return x; // x is converted to prvalue
}
};
表達bar.foo()
爲prvalue。
OR
Lambda表達式,如
[](int x){return x*x;}
§3.10.1
甲prvalue(「純」右值)是一個rvalue這不是一個x值。 [例如:調用返回類型不是引用的函數的結果是一個前值。諸如12,7.3e5或true這樣的字面值也是一個值。 - 示例]
請參閱n3055。
-1,你引用'func()'是一個右值。 –
@ JohannesSchaub-litb我在說「調用返回類型不是引用的函數的結果是一個前值」。 – billz
@billz等價物(請在我的上述評論中用prvalue。accident替換rvalue)。你沒有在代碼中調用函數。 –