Frage Gibt den Typ der bitweisen Operatoren in C ++ zurück


Da ich Template-Klassen für kleine mathematische Vektoren implementiere, stoße ich auf ein Problem. Für die arithmetischen Operationen ist der Rückgabetyp von T1 lhs + T2 rhs ist std::common_type<T1, T2>::type. Aber was ist der Rückgabetyp für die folgenden (zum Beispiel T1 signiert und T2 unsigned oder das Gegenteil, oder T1 char und T2 unsigned long long int etc ...):

T1 lhs & T2 rhs ?
T1 lhs | T2 rhs ?
T1 lhs ^ T2 rhs ?
T1 lhs << T2 rhs ?
T1 lhs >> T2 rhs ?

Vielen Dank.


6
2017-07-31 18:01


Ursprung


Antworten:


Ich nehme an, dass Sie eine kompositorisch bitweise Operationen auf Vektoren implementieren werden. Im Wesentlichen bitweise Operationen sind Integer-Operationen und ich sehe keinen Grund, warum nicht ihr Ergebnis als zu machen std::common_type<T1, T2>::type.

Das Ergebnis von Verschiebungen hängt nicht vom richtigen Operanden ab. Verwenden Sie einfach T1 dafür.


4
2017-07-31 18:06