这是我问题的简化版本。我有一个财产类。它有has_initalized之类的数据,我在这个例子中删除了这些数据。
当我调用一个使用T的函数时,它很好。然而,T&;不是吗?所以我决定写一篇T&;但这会导致所有使用纯T的函数都出现编译错误。为什么T&;干扰?对于这个例子,我如何在不更改main()的情况下让两个函数(Q和W)都工作?
template <class T>
class Property {
T v;
Property(Property&p) { }
public:
Property() {}
T operator=(T src) { v = src; return v; }
operator T() const { return v; }
operator T&() const{ return v; }
T operator->() { return v; }
};
class A{};
void Q(A s){}
void W(A& s){}
int main(){
Property<A> a;
Q(a);
W(a);
}