我问了这个关于用模板版本重载复制构造函数和赋值运算符的问题,并考虑到围绕这个问题的混淆(因为它似乎是一个编译器错误),我想我会尝试只使用模板复制构造函数和模板赋值运算符走着瞧吧。但是编译器完全忽略了它们。
struct BaseClass
{
public:
BaseClass() {}
template<typename T>
BaseClass(const T& a_other)
{
int i = 0; // for break point which is not hit
}
template<typename T>
BaseClass& operator= (const T& a_other)
{
int i = 0; // for break point which is not hit
return *this;
}
};
struct MyClass : public BaseClass
{
};
int main()
{
MyClass i, j;
i = j;
return 0;
}
为什么我不能用模板版本覆盖默认值(我怀疑答案将是默认值是更好的匹配,但我希望模板版本也可以作为默认值)?我能做些什么来确保调用模板版本而不是默认值吗?