关于这个问题,为什么一个十六进制值的用户定义字面量会映射到与字符串不同的字符串字面量操作符?也就是说,为什么以下代码:
std::vector<uint8_t> val1 = 0x229597354972973aabbe7_hexvec;
映射到
std::vector<uint8_t> operator"" _hexvec(const char*str)
{
// Handles the form 0xFFaaBB_hexvec and 0Xf_hexvec
size_t len = strlen(str);
return convertHexToVec(str, len);
}
当代码
std::vector<uint8_t> val2 = "229597354972973aabbe7"_hexvec;
映射到
std::vector<uint8_t> operator"" _hexvec(const char*str, std::size_t len)
{
// Handles the conversion form "0xFFAABB"_hexvec or "12441AA"_hexvec
return convertHexToVec(str, len);
}
什么情况下使用
size_t
是必要的,即使两个字符串都是以 null 结尾?说到这点,为什么 0x551A_hexvec 也被视为一个字符串?为什么不是整数?