C++编译时编程与计算器项目实践
1. 用户自定义字面量
编译时编程的一个常见用途是定义自己的字面量。标准库定义了像 "view"sv 这样的字面量,它是 std::string_view{"view"} 的快捷方式。为避免与标准库中现有的或未来的字面量冲突,用户自定义字面量总是以下划线开头。
定义字面量时,使用 operator"" 后跟字面量名称。可以定义字符、数字或字符串字面量。编译器会查找将值作为参数或构成值的字符作为模板参数包的函数。以下是一个反转整数位的 _rev 字面量示例:
consteval unsigned long long operator"" _rev(unsigned long long value)
{
unsigned long long reversed{0};
for (std::size_t i{std::numeric_limits<unsigned long long>::digits}; i > 0; --i)
{
auto bit{ value & 1 };
value >>= 1;
reversed = (reversed << 1) | bit;
}
return reversed;
}
static_assert(0_rev == 0);
static_assert(0x1234567890abcdef_rev == 0
超级会员免费看
订阅专栏 解锁全文
2805

被折叠的 条评论
为什么被折叠?



