是否有標準型別可以取消標記型別?它可能是這樣實作的:
template<class T>
using untokenize = T;
通過這種方式,我可以使用多載運算子執行以下轉換:
struct x {
int y;
operator int&() {
return y;
}
};
x a;
// int&(a); // doesn't work
// (int&)(a); // not the same thing
untokenize<int&>(a); // works great
或者是否有另一種更標準的方法來實作我的目標,即避免使用 c 樣式轉換而支持函式樣式轉換?
uj5u.com熱心網友回復:
static_cast<T> 做你所要求的。
uj5u.com熱心網友回復:
一般來說,使用正確的“命名演員”會更慣用。在這里,static_cast是合適的:
static_cast<int&>(a);
這就是說,有是的作品與您的另一種方法,一個標準的模板,std::type_identity但是C的,只能作為 20:
std::type_identity_t<int&>(a);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386149.html
