come ho scoperto da this post i tipi di parametri consentiti per un tipo letterale definito dall'utente sono i seguenti:Come posso creare un valore letterale definito dall'utente per un tipo intero con segno?
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
Ebbene, l'unico intero con segno che vedo in tale elenco è char
, che è troppo piccolo. Che cosa succede se volevo fare qualcosa di simile:
str operator"" _i(int i) {
return i*2;
}
Poi quando scrivo -1000_i
mi aspetto di ottenere -2000
. Come faccio a fare questo?
Sidenote: 'char' può o non può essere un tipo firmato a seconda dell'implementazione. – user2079303
'char' (e' wchar_t', 'char16_t' e' char32_t' si applicano a caratteri letterali a virgolette singole. Una stringa di cifre è sempre un intero letterale ed è sempre positiva, perché il segno '-' è _not_ parte di it. –