cppreference用户自定义字面量相关规则释义及简单示例请求
文段含义
该规则是C++用户自定义数字字面量的重载决议分支规则,适用场景为:当编译器匹配不到接收unsigned long long、long double这类数值类型参数的字面量运算符时,就会进入该判断逻辑:
- 此时候选的重载集合里不能同时存在原始字面量运算符和数字字面量运算符模板,否则会触发编译冲突
- 若候选集合中只有原始字面量运算符,编译器会直接把你写的字面量的原始字符序列作为
const char*参数传入运算符函数,不会对字面量做任何数值转换。
示例代码
#include <cstring> #include <iostream> // 原始字面量运算符,参数为const char* size_t operator "" _len(const char* s) { return strlen(s); } // 若取消下方注释,重载集同时存在两类运算符,直接编译报错 // template <char... Cs> size_t operator "" _len(); int main() { // 1234_len 会被处理为 operator "" _len("1234") std::cout << 1234_len << '\n'; // 输出 4 // 原字符序列是"00123",不会转成数值去掉前导零 std::cout << 00123_len << '\n'; // 输出 5 return 0; }
内容的提问来源于stack exchange,提问作者ahmed mokhtar
相关产品推荐
相关产品推荐

