将类型分配给原始文字的简写方法

the*_*rky 1 c++ types overloading literals

在不进行强制转换的情况下将类型分配给文字原语的方法有哪些?我知道 0.0 变成双精度数,0.0f 变成浮点数。还有其他方法可以对文字进行类型转换吗?

Bar*_*rry 5

您可以将许多后缀添加到整数文字中以获得所需的类型:

1    // int
2u   // unsigned int
3ll  // long long int
4ull // unsigned long long int
Run Code Online (Sandbox Code Playgroud)

类似地,对于浮动文字,没有后缀给你doublef给你floatl给你long double

对于小于 的类型,没有预先打包的文字后缀int。但你可以自己写,例如:

inline uint16_t operator ""_u16(uint64_t value) {
    return static_cast<uint16_t>(value);
}

5_u16 // uint16_t
Run Code Online (Sandbox Code Playgroud)

除了 VC 显然为所有类型提供了文字后缀 - 就像10i16给你一个int16_t.