[英]static_cast int to reference to int?
是否允許:
int x = 1;
int r1 = static_cast<int&>(x);
int r2 = static_cast<int&&>(x)
如果是,那么這些演員表的含義是什么?
這個代碼引起了問題:
int x = 1;
int y = 2;
std::swap(x, y); // uses int temp = std::move(x);
static_cast int要引用int嗎? 可以嗎
是。 這是允許的。
如果是,那么這些演員表的含義是什么?
強制轉換為相同類型的左值引用幾乎是沒有意義的,因為它自己使用的變量已經是左值。 但是,它會影響decltype推導,如Ben Voigt的示例所示 。 如果您需要向下轉換對base的引用(與int
不相關),則強制轉換為對另一種類型的引用很有用。
強制轉換為右值引用非常有用,因為它會將表達式的類型更改為xvalue。 這允許從變量移動。 實際上,這就是std::move
所做的。 但是,這與int
無關緊要。
static_cast<int&>(x);
在表達式中使用x
因為x
已經是int&
類型,所以不執行任何操作。
static_cast<int&&>(x);
將l值的x
轉換為r值。 這正是std::move
和T&&
用於實現移動語義的功能。
std::swap
使用std::move
是因為沒有任何缺點,而且可能不會提高性能。 移動ctor / assignments的效率至少應與復制ctor / assignments一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.