Greetings,

Now that C++11 user-defined literals are in trunk I was thinking about 
reclaiming some of the numeric suffixes that are currently recognized by gcc in 
the preprocessor.  The C++11 spec stipulates that any suffix that is recognized 
by the implementation is not allowable as a user-defined literal suffix in c++. 
 This prevents C++ from hijacking 123LL, 1.234L, etc.  On the other hand, there 
are several numeric literal suffixes that are recognized and used as gnu 
extensions.

One class of suffixes stands out in this connection: fixed-point literals.  
These end in 'k' or 'r' and can optionally be unsigned by starting with 'u' and 
optionally have a size 'h', 'l', 'll'.  The difference for these suffixes is 
that fixed-point literals are explicitly rejected by the c++ front end.  
Attempts to use such literals:
int i= 1.23k;
results in 'error: fixed-point types not supported in C++'.

So I ask the question:  Should I make a simple change to libcpp to allow 
fixed-point literal suffixes to pass to the user-defined literal code in c++11 
mode?

Thanks,

Ed Smith-Rowland

P.S. There are other suffixes that might be reclaimed as well such as 'i', 'I', 
'j', 'J' for complex integral or floating point imaginary numbers and others.  
These might be more difficult or impossible to reclaim for C++11 because these 
might be allowed and used in gnu-C++ and it might break existing code.

Reply via email to