在本例中,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/