我关于名称中的下划线的问题在这里得到了部分回答,但要么答案不完整,要么我不完全理解。
教派。C++11 标准的 2.14.8.7 声明了这个文字运算符作为示例:
long double operator "" _w(long double);
除了声明操作符之外,标准及其示例还做了另外两件事情,如果分开来看,每件事情都是有意义的:
- 它以
_w
下划线开头;和 - 它将操作符放在全局命名空间中。
我的问题有两个部分:
- 根据上面链接的答案,名称
_w
不是标识符,或者标识符_w
不是名称,或者......好吧,我很困惑。 - 如果没问题
_w
,那么大写的_W
也可以 - 如60.0_W
,意思是60.0 瓦? 还是预处理器可能会错误处理大写版本?
毫无疑问,我和你一样,不习惯用下划线开始全局名称,这是标准教派的习惯。17.6.4.3.2.1 似乎明确弃用。因此,如果您可以对下划线、名称和文字运算符的问题进行一些额外的说明,那么您将不胜感激。