如何在C ++中使用auto关键字分配uint32_t或uint64_t类型的变量

时间:2019-01-08 16:40:19

标签: c++11

考虑auto var = 5u;。在这里,我使用后缀u,因此var将被推导为unsigned int。有什么方法可以为uint32_tuint64_t类型实现类似的功能? C ++ 11或C ++ 14有后缀吗?

2 个答案:

答案 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);
}