我有一种感觉,我会因为问这个问题而被灼伤,但是我的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