我想知道如果我测试一个班级的某个成员并且该成员是私人的,那么sfinae会做出什么反应?它是否会出错或者说是好的还是会以错误的方式出错?
我问过这个问题,关于使用模板版本重载复制构造函数和赋值运算符并考虑到涉及问题的混淆(因为它似乎是编译器错误),我想我只尝试使用模板复制构造函数和模板赋值运算符来走着瞧吧.但是编译器完全忽略了它们.
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;
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能用模板版本覆盖默认值(我怀疑答案是默认值是更好的匹配,但我希望模板版本也可以作为默认值)?我能做些什么来确保调用模板版本而不是默认值?