Sto imparando C++ 11 e sono interessato ai valori letterali definiti dall'utente. Quindi ho deciso di giocare un po 'con esso. Alcune lingue hanno una sintassi simile a questo:C++ 11 letterali definiti dall'utente
int n = 1000_000_000;
ho cercato di simulare questa funzione in C++ 11.
inline constexpr unsigned long long operator "" _000 (unsigned long long n)noexcept
{
return n * 1000;
}
inline constexpr unsigned long long operator "" _000_000 (unsigned long long n)noexcept
{
return n * 1000*1000;
}
inline constexpr unsigned long long operator "" _000_000_000 (unsigned long long n)noexcept
{
return n * 1000*1000*1000;
}
int main(){
constexpr auto i = 100_000; // instead of 100000
constexpr auto j = 23_000_000; // instead of 23000000;
}
Ma per il caso generale non ho potuto simulare, vale a dire
auto general_case = 123_456_789; // non può compilare
La mia domanda è "Posso simulare per il caso generale come sopra usando C++ 11?".
Funziona per 1_000_000? Personalmente userò letterali utente personalizzati e le lettere K M G (kilo mega giga). – dtech
1_000_000 compilato !!! –
@driver solo problema con quello è quindi non si può essere così esatti – aaronman