次のコードは、GCC と Clang の両方でコンパイルされます。
long double operator""_a(long double);
auto x = 0e1_a+0; // OK
_a
しかし、これではありません( に置き換え_e
ます):
long double operator""_e(long double);
auto y = 0e1_e+0; // Error: unable to find numeric literal operator 'operator""_e+0'
OTOH、このコードはコンパイルされます:
auto z = 0e1_e +0; // OK
どうしたの?
(この質問は、この GCC バグ レポートに触発されています。)