decltype(1 + 2)是否聲明一個xvalue或/或prvalue?C++ 11:「decltype(1 + 2)」聲明一個xvalue還是一個prvalue?
cppreference說,decltype(表情)將宣佈: 1中。T & &如果表達式是x值 2.■如果表達式是prvalue 把t &如果表達式是左值
但我的問題是:如何生成一個表達式是一個xvalue?我想,返回值和臨時對象應該是x值,但實際上他們似乎是x值,在我的實驗:
struct S{};
S f();
int main()
{
int i=2;
decltype(i+1) j=i;
++j;
printf("i=%d\n",i);
S obj;
decltype(f()) k=obj;
return 0;
}
這個程序編譯:我可以判斷,
decltype(我+ 1 )聲明第(i + 1)作爲prvalue
因爲如果它是一個x值,然後decltype得到Ť& &,不能結合到的「i」的左側值可變。 decltype(f())也給我f()作爲一個prvalue也很奇怪嗎?
所以我的問題是:如何寫一個表達式,以便decltype(表達式)給我一個xvalue? 謝謝。
http://en.cppreference.com/w/cpp/language/value_category#xvalue – user2357112
你似乎混淆了幾個概念。你不能「聲明」一個值類別。你用類型聲明變量。值類別是表達式的屬性。 –