El uso de literales definidos por el usuario en expresiones a veces requiere espacios en blanco

El siguiente código se compila tanto en GCC como en Clang:

long double operator""_a(long double);     
auto x = 0e1_a+0; // OK 

Pero no esto (reemplazando_a con_e):

long double operator""_e(long double);
auto y = 0e1_e+0; // Error: unable to find numeric literal operator 'operator""_e+0'

OTOH, este código compila:

auto z = 0e1_e +0; // OK

¿Que esta pasando?

(Esta pregunta está inspirada eneste informe de error de GCC.)

Respuestas a la pregunta(1)

Su respuesta a la pregunta