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
1 ответ
Решение
Это ошибка, исправленная в Boost 1.65
- Wandbox w / 1.64.0 https://wandbox.org/permlink/bATVUkq5T0N5oCR4
- Wandbox w / 1.65.0 https://wandbox.org/permlink/YFuIysXJCS1u3x9E