0

我打算使用具有boost::multiprecision::cpp_int参见 Boost Multiprecision)作为数据成员的类,并且我希望使用boost::fast_pool_allocator Boost custom allocator在堆上管理这些类的实例。

为了安全起见,我需要知道它boost::multiprecision::cpp_int是一个 POD(或者至少它没有在堆上分配 - 即纯粹基于堆栈)。

boost::multiprecision::cpp_intPOD 吗?

谢谢!

4

2 回答 2

4

为什么不写一个小程序来找出答案?

#include <iostream>
#include <type_traits>
#include <boost/multiprecision/cpp_int.hpp>

int main()
{
    std::cout << std::is_pod<boost::multiprecision::cpp_int>::value << std::endl;
}

在我的平台(gcc 版本 4.8.2)上,输出为 0,这意味着该类型不是 POD 类型。

于 2014-04-08T15:13:41.513 回答
2

答案来自@PlasmaHH 的评论,回想起来非常明显,是不,boost::multiprecision::cpp_int不是 POD

引用 PlasmaHH 的话:

想一想,它长大后可能延伸到哪里?在您链接的文档中,还有什么可能“确定在诉诸动态内存分配之前直接存储在对象中的位数”是什么意思?

于 2014-04-11T14:19:44.577 回答