根据 cppreference 文档,其中写着(强调我的):
std::enable_if可以有多种形式使用,包括: 作为附加函数参数(不适用于运算符重载), 作为返回类型(不适用于构造函数和 析构函数), 作为类模板或函数模板参数。
std::enable_if
作为附加函数参数(不适用于运算符重载),
作为返回类型(不适用于构造函数和 析构函数),
作为类模板或函数模板参数。
为什么使用
enable_if
[over.oper.general]/10:
运算符函数不能有默认参数,除非下面明确说明。运算符函数的参数不能多于或少于相应运算符所需的数量,如 [over.oper] 其余部分所述。