O uso de literais definidos pelo usuário em expressões às vezes requer espaço em branco
O código a seguir é compilado no GCC e no Clang:
long double operator""_a(long double);
auto x = 0e1_a+0; // OK
Mas não isso (substituindo_a
com_e
):
long double operator""_e(long double);
auto y = 0e1_e+0; // Error: unable to find numeric literal operator 'operator""_e+0'
OTOH, esse código compila:
auto z = 0e1_e +0; // OK
O que está acontecendo?
(Esta questão é inspirada emeste relatório de bug do GCC.)