C++ 整数类型是给定类型宽度的两倍

标签 c++ c++11 std

在本例中,coord_squared_t是整数类型的别名,其大小至少是整数类型 coord_t 的两倍:

typedef int_least32_t coord_t;

coord_squared_t CalculateSquaredHypothenuse(coord_t x, coord_t y){
    coord_squared_t _x=x;
    coord_squared_t _y=y;
    return _x*_x+_y*_y;
}

可以用什么来表达coord_squared_t根据 coord_t ?标准库中是否有任何东西可以让我执行 double_width<coord_t>::type 之类的操作?获得正确的宽度,而不是显式选择类型?

C++11 或 C++14 都可以。

最佳答案

您可以使用 boost::int_t :

using coord_squared_t = boost::int_t<sizeof(coord_t)*CHAR_BIT*2>::least;

关于C++ 整数类型是给定类型宽度的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852678/

相关文章:

c++ - 线程错误

c++ - 在头文件中使用一个类作为另一个类中的值类型

c++ - 更多与eclipse cdt

c++ - 计算映射结构的散列

c++ - unique_ptr 和 OpenSSL 的 STACK_OF(X509)*

c++ openCV 3.1 - 不能像教程中那样使用 Mat 或大多数 openCV 东西

c++ - 成员函数后面的成员函数叫什么,我该如何编写?

c++ - 信号处理程序中不允许使用对象或函数

c++ - 如何使用 std::shared_ptr<void> 和另一种类型的 std::shared_ptr 进行函数重载?

c++ - 有没有办法为 std::array 创建函数模板特化