2

正常にコンパイルされる次のコードを検討してください。

#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_type4 バイト ( uint32_t) なのに、 の結果suggested_upper_bucket_count()が 8 バイトになるのでしょうか?

ライブでご覧ください: https://godbolt.org/g/3Sz8Xj

4

1 に答える 1