提问人:NathanOliver 提问时间:1/3/2017 最后编辑:Angew is no longer proud of SONathanOliver 更新时间:1/4/2017 访问量:854
using 命令在使用保留标识符时是否应发出警告?
Should a using command issue a warning when using a reserved identifier?
问:
使用线路时
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
答:
2赞
Columbo
1/3/2017
#1
可以说,措辞已经足够清楚了——[over.literal]/1:
一些文字后缀标识符是 为未来的标准化保留;见17.6.4.3.5。其 literal-operator-id 使用此类文本后缀的声明 标识符格式不正确;无需诊断。
这可以解释为引用(UDL 运算符)声明,其“名称”是 literal-operator-id——这当然不包括您的情况,因为 literal-operator-id s 是不合格的。[reserved.names]/2 也是如此,其中“context”是用户定义的文字运算符的声明。
评论
0赞
T.C.
1/4/2017
通过此参数,没有声明“直接”包含文本运算符 ID。该非终端仅在两个位置使用(template-id 和 unqualified-id)。
0赞
Columbo
1/4/2017
@T.C. 不,我的论点不是关于生产,而是关于等价。该声明不命名 literal-operator-id。
0赞
T.C.
1/4/2017
好吧,是一个文字运算符 ID,所以我不确定我是否得到这个参数。operator""s
0赞
Columbo
1/4/2017
@T.C.文本运算符 ID 从不限定。
1赞
NathanOliver
8/23/2017
@Columbo 有什么更新吗?我正在考虑提供赏金,以引起更多关注。
评论