以下代码能够在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'
另一方面,这段代码可以编译:
auto z = 0e1_e +0; // OK
发生了什么?
(这个问题的灵感来自这个 GCC 错误报告。)
e
或E
结尾的名称都会发生这种情况 :/ - Jarod42