gpt4 book ai didi

c++ - 获得两倍宽的字体

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:26:19 25 4
gpt4 key购买 nike

基本上,我想(在编译时)从 stdint 类型中获取两倍宽度的类型。我可以像这样手工完成

template <typename T>
class twice_as_wide{};

template<>
class twice_as_wide<uint8_t>
{
public:
typedef uint16_t type;
};

template<>
class twice_as_wide<int8_t>
{
public:
typedef int16_t type;
};

template<>
class twice_as_wide<uint16_t>
{
public:
typedef uint32_t type;
};

等,我只是想确保这还不存在。我正在使用 visual studio 2010 C++0X(我知道这很烦人)并且已经有了增强依赖性。有谁知道这个的现有实现?

最佳答案

如果你不介意另一个 boost 依赖,那么你可以这样做:

#include <type_traits>
#include <boost/integer.hpp>


template <typename T, bool is_unsigned = std::is_unsigned<T>::value>
struct twice_as_wide
{
typedef typename boost::uint_t< 2 * std::numeric_limits<T>::digits>::exact type;
};

template<typename T>
struct twice_as_wide<T, false>
{
typedef typename boost::int_t< 2 * (std::numeric_limits<T>::digits + 1)>::exact type;
};

template< typename T>
using twice_as_wide_t = typename twice_as_wide<T>::type;

关于c++ - 获得两倍宽的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com