我有一種感覺,我會因爲問這個問題而被灼傷,但是我的C++知識是有限的,而且我正在學習。根據特定類型將特定的移動構造函數注入到任意類型中
是否有一種方法可以隱藏/覆蓋另一種類型T
的移動行爲,當目標my_class
的實例與其他操作符所做的相似時?
例如:
template<typename T>
class my_class
{
...
};
std::istream& operator>>(std::istream& is, my_class& c);
而是與移動分配/移動構造函數。
如果我想在處理my_class
的實例時覆蓋類型T
的移動(構造或賦值)行爲,這是可能的嗎?這是否需要某種反思,或者是否可以用構造如friend
執行,或者只需在全局範圍聲明一個函數,並將這兩種類型都作爲參數?
示例假設T
是某種類型的,我想隱藏/覆蓋T
的舉動爲建設和分配行爲:
T t;
t = my_class<T>(...); // move-assign T from my_class rvalue
T t(my_class<T>(...)); // move-construct T from my_class rvalue
我假設有人還要問爲什麼在世界上我會想要做這樣的事情,the answer to that question lies in my comments here.
'T T = my_class(...);'和'T T(my_class (...));'兩者都做同樣的事情,而且都沒有任何意義。你想達到什麼目的? –
Barry
@Barry一直讀到最後的問題;) 樣,一個叫T的移動賦值運算符,另一個是移動構造函數。我想爲嘗試移動'my_class'的類改變這種行爲。 –
在C++中沒有任何反射,所以不起作用。 – phantom