gpt4 book ai didi

c++ - 如何在编译时找出 std::bitset 的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:01 24 4
gpt4 key购买 nike

有没有办法找出 std::bitset 的大小?

我有

 typedef std::bitset<64> Bitset;

我想在不创建实例的情况下知道大小。例如。像 Bitset::size

当我查看 bitset.h 中的源代码时,它对我来说完全不可读,但即使我找到了这些行

public:
enum {_EEN_BITS = _Bits};
typedef _Bitset_base<_Bits <= 8 ? 1
: _Bits <= 16 ? 2
: _Bits <= 32 ? 4
: 8> _Mybase;
typedef typename // sic
_Mybase::_Ty _Ty;

我想告诉我,_Ty 可以包含大小,但是当我尝试调用 Bitset::_Ty 时,我得到 illegal use of this type as一个表达式

我知道我可以在输入位集之前将大小存储在某处,但这不是我想要的。

最佳答案

改用 Bitset::digits,在您的情况下对应于 64。

编辑:结果是错误的,这里有一个不同的解决方案:

template< typename T >
struct GetSize;

template< size_t Len >
struct GetSize< std::bitset< Len > >
{
enum { Length = Len };
};

如:

const size_t bitsetLength = GetSize< std::bitset< 1024 > >::Length;

关于c++ - 如何在编译时找出 std::bitset 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868160/

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