11

我知道这是一个旧功能,但阅读用户定义的文字,例如

return_t operator "" _a(long); // Literal operator for user-defined INTEGRAL literal

我被提醒了

前导下划线是必需的。(只有标准库允许定义不带下划线的文字。)(A)

这似乎打破了模式,因为到目前为止,实现使用下划线名称并给我们留下了好的名称,例如为实现保留的名称是

  1. 包含双下划线
  2. 以下划线开头,后跟大写字母

此外,在存在规则 (2) 的情况下,引用 (A) 有点危险。那么为什么不一致呢?

4

1 回答 1

9

在将用户定义文字的概念添加到语言中之前,所有标准文字都使用不以下划线开头的序列,例如123L文字long int。因此,为了保持一致性,标准字面量在没有任何特殊前缀的情况下获取命名空间,并且 UDL 使用_.

于 2017-01-29T00:06:47.597 回答