使用命令时,using命令是否应该发出警告?

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中,编译器发出警告声明:

警告:未包含"_"的文字运算符后缀保留用于将来的标准化

using std::literals::chrono_literals::operator""s;
Run Code Online (Sandbox Code Playgroud)

MSVS也发布了类似的警告.然而,铿锵声3.8.0没有发出这样的警告.

由于operator""schrono库的标准定义不应该发出警告,因为我们只是导入名称而不是定义名称?

Col*_*mbo 2

可以说,措辞已经足够清楚了—— [over.literal]/1

一些文字后缀标识符被保留用于将来的标准化;见 17.6.4.3.5。literal-operator-id使用此类文字后缀标识符的声明是格式错误的;无需诊断。

这可以解释为引用其“名称”是literal-operator-id的(UDL运算符)声明——这当然排除了您的情况,因为literal-operator-id是不合格的。[reserved.names]/2也是如此,其中“上下文”是用户定义的文字运算符的声明。