我试图为某种类型定义一元operator+
。我希望此运算符只能在类的范围内使用,但是即使不可能,我仍然对此感到困惑:
struct X {};
struct Foo {
friend const char* operator+(X x) { return "hi"; }
void foo() {
+X{}; // error: invalid argument type 'X' to unary expression
}
};
int main() {
+X{}; // error: invalid argument type 'X' to unary expression
return 0;
}
如果运算符在类内部是不可调用的,并且在类外部是不可调用的,那么它可调用吗?去哪了?
(请注意,+(X{})
的行为方式相同,如果将operator+
移到struct Foo
之外,则两个调用均有效。)