我知道自定义运算符不受c ++的官方支持。
我已经知道this来定义自定义运算符。
但是,由于这似乎不适用于包含特殊字符的自定义运算符,我想知道是否有任何安全方法或黑客用于在c ++中创建具有特殊字符(如<-
或#
)的自定义运算符/ p>
答案 0 :(得分:3)
struct A {
int x;
};
template<class T>
struct dashed {
T t;
template<class U>
operator U()&&{ return -std::move(t); }
};
template<class T>
dashed<T> operator-(T&& t){return {{std::forward<T>(t)}};}
template<class T>
A& operator<( A& lhs, dashed<T> rhs ) {
lhs.x = rhs.t.x;
return lhs;
}
int main() {
A a{1}, b{2};
std::cout << a.x << '\n';
a <- b;
std::cout << a.x << '\n';
}
一般来说,没有。我可以通过使用其他运算符来破解 <-
的这个特定示例。