/ / benutzerdefinierte Operatoren mit Sonderzeichen in C ++ - C ++, C ++ 11, Makros, Operator-Überladung

benutzerdefinierte Operatoren mit Sonderzeichen in C ++ - C ++, C ++ 11, Makros, Operator-Überladung

Ich weiß, dass benutzerdefinierte Operatoren nicht offiziell von C ++ unterstützt werden. Und ich weiß es bereits Dies um benutzerdefinierte Operatoren zu definieren. Da dies jedoch nicht für benutzerdefinierte Operatoren funktioniert, die Sonderzeichen enthalten, würde ich gerne wissen, ob es eine sichere Methode oder einen Hack gibt, um benutzerdefinierte Operatoren mit Sonderzeichen (z. B. <- oder #) in C ++

Antworten:

3 für die Antwort № 1
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";
}

Live-Beispiel.

Im Allgemeinen, nein. Ich kann nur hacken Dieses besondere Beispiel von <- durch Verwendung anderer Operatoren.