Wie ich aus this post entdeckten die Parametertypen für einen benutzerdefinierten wörtlichen Typ erlaubt sind wie folgt:Wie erstelle ich ein benutzerdefiniertes Literal für einen Ganzzahl-Typ mit Vorzeichen?
const char*
unsigned long long int
long double
char
wchar_t
char16_t
char32_t
const char*, std::size_t
const wchar_t*, std::size_t
const char16_t*, std::size_t
const char32_t*, std::size_t
Nun, die einzige Signed Integer ich in dieser Liste sehen ist char
, was zu klein ist. Was passiert, wenn ich so etwas wie dies tun wollte:
str operator"" _i(int i) {
return i*2;
}
Dann, wenn ich -1000_i
schreibe ich erwarte -2000
zu bekommen. Wie mache ich das?
Hinweis: 'char' kann je nach Implementierung ein signierter Typ sein oder nicht. – user2079303
'char' (und' wchar_t', 'char16_t' und' char32_t' gelten für Literale mit einem einzigen Anführungszeichen. Eine Ziffernfolge ist immer ein ganzzahliges Literal und immer positiv, weil das '-' Zeichen _nicht_ Teil von ist it. –