10

使用线路时

using std::literals::chrono_literals::operator""s;

在 g++ 6.3.0 中,编译器发出警告说明:

警告:不以“_”开头的文字运算符后缀保留用于将来的标准化

using std::literals::chrono_literals::operator""s;

MSVS 中也发出了类似的警告。然而,clang 3.8.0 没有发出这样的警告。

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

4

1 回答 1

2

可以说,这方面的措辞很清楚- [over.literal]/1

一些文字后缀标识符是为将来的标准化保留的;见 17.6.4.3.5。literal-operator-id使用这种文字后缀标识符的声明格式不正确;无需诊断。

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

于 2017-01-03T14:23:34.833 回答