Является ли boost :: multiprecision :: cpp_int POD?

Я собираюсь использовать классы, которые имеют boost::multiprecision::cpp_int (см. Повышение Multiprecision) как члены данных, и я надеюсь управлять экземплярами этих классов в куче, используя boost::fast_pool_allocator Увеличить пользовательский распределитель.

Для того, чтобы это было безопасно, мне нужно знать, что boost::multiprecision::cpp_int является POD (или, по крайней мере, он не выделяется в куче, т. е. является чисто стековым).

Является boost::multiprecision::cpp_int ПОД?

Спасибо!

0

Решение

Почему бы не написать небольшую программу, чтобы узнать?

#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.

4

Другие решения

Ответ, взятый из комментария @ PlasmaHH и довольно очевидный в ретроспективе, заключается в том, что нет, boost::multiprecision::cpp_int это не POD.

Цитировать из PlasmaHH:

Подумайте об этом на мгновение, где это может распространиться, когда
оно растет? Также что может быть «Определяет количество битов для
хранить непосредственно внутри объекта, прежде чем прибегать к динамической памяти
Выделение «в документации вы связали, значит?

1

По вопросам рекламы [email protected]