[英]Implicit conversion and operator overloading
我有以下代码:
struct helper {
template<typename T> helper(T const&);
};
helper operator*(helper const&);
struct A {};
int main() {
// (1)
A a;
sizeof(*a);
// (2)
int i;
sizeof(*i);
}
情况(1)编译得很好,我知道它正在使用隐式转换为helper
类型和给定的运算符重载。
但是,对于情况(2),我收到编译器错误:
invalid type argument of unary '*' (have 'int')
为什么隐式转换用于类型A
但不用于int
?
如果不涉及用户定义的类型,则假定任何运算符都是内置运算符。 所以
helper operator*(helper const&);
当i
是内置类型(例如int
)时,找不到*i
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.