考虑auto var = 5u;
。在这里,我使用后缀u
,因此var将被推导为unsigned int
。有什么方法可以为uint32_t
或uint64_t
类型实现类似的功能? C ++ 11或C ++ 14有后缀吗?
答案 0 :(得分:15)
我假设您正在使用Herb Sutter建议的AAA style。
在这种情况下,一个不错的解决方案是简单地编写:
auto variable_name = uint64_t{ 5000000000 };
这是清晰,一致且明确输入的,不需要讨厌的C预处理器。
编辑:如果要绝对确定使用文字时,可以将an appropriate suffix添加到整数文字中以确保足够大的范围,同时仍显式键入变量。
答案 1 :(得分:4)
您始终可以定义自己的后缀
#include <cstdint>
#include <type_traits>
uint32_t operator ""_u32 (unsigned long long v) { return uint32_t (v); }
int main ()
{
auto v = 10_u32;
static_assert (std::is_same <decltype (v), uint32_t>::value);
}