Nat*_*ica 10 c++ using-directives reserved-words language-lawyer user-defined-literals
使用该线路时
using std::literals::chrono_literals::operator""s;
Run Code Online (Sandbox Code Playgroud)
在g ++ 6.3.0中,编译器发出警告声明:
警告:未包含"_"的文字运算符后缀保留用于将来的标准化
Run Code Online (Sandbox Code Playgroud)using std::literals::chrono_literals::operator""s;
MSVS也发布了类似的警告.然而,铿锵声3.8.0没有发出这样的警告.
由于operator""schrono库的标准定义不应该发出警告,因为我们只是导入名称而不是定义名称?
可以说,措辞已经足够清楚了—— [over.literal]/1:
一些文字后缀标识符被保留用于将来的标准化;见 17.6.4.3.5。其literal-operator-id使用此类文字后缀标识符的声明是格式错误的;无需诊断。
这可以解释为引用其“名称”是literal-operator-id的(UDL运算符)声明——这当然排除了您的情况,因为literal-operator-id是不合格的。[reserved.names]/2也是如此,其中“上下文”是用户定义的文字运算符的声明。