Boost Intrusive unordered_set статическая функция-член возвращает неверный тип размера

Рассмотрим этот код, который успешно компилируется:

#include <boost/intrusive/unordered_set.hpp>

using namespace boost::intrusive;

typedef unordered_set_member_hook<> Hook;

struct Item
{
Hook hook;
};

typedef unordered_set<Item,
member_hook<Item, Hook, &Item::hook>,
size_type<uint32_t> > Map;

static_assert(4 == sizeof(typename Map::size_type));
static_assert(8 == sizeof(decltype(Map::suggested_upper_bucket_count(1000))));

В обоих документация а также код, suggested_upper_bucket_count() объявлен так:

static size_type suggested_upper_bucket_count(size_type);

Так как же это может быть Map::size_type 4 байта (uint32_t) пока что результат suggested_upper_bucket_count() такое 8 байт?

Смотрите это в прямом эфире: https://godbolt.org/g/3Sz8Xj

2

Решение

Это ошибка, исправленная в Boost 1.65

1

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

Других решений пока нет …

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