首页 > 解决方案 > 保留名称和用户文字

问题描述

C++ 标准在所有范围内保留以下划线后跟大写字母开头的名称。

这是否适用于用户文字运算符?

例如

int _MyInt; // reserved, violation

template < char... >
auto operator "" _MyInt ( ); // reserved???

标签: c++language-lawyeruser-defined-literals

解决方案


不,它允许使用下划线后跟大写字母(否则为保留标识符)。

来源

在支持上述内容的标准中,我只找到了一个示例,而不是正式段落:

[over.literal]

double operator""_Bq(long double);    // OK: does not use the reserved identifier _­Bq
double operator"" _Bq(long double);   // uses the reserved identifier _­Bq 

因此,只要您之间不留空格""_Ud就可以了-根据示例。


推荐阅读