static constexpr hive_limits block_capacity_hard_limits() noexcept; // C++26
概要
処理系のハード制限を取得する。
「ハード制限(hard limits)」とは、その処理系の実装が要素ブロックに対して実際にサポートできる、保持要素数の下限・上限の絶対的な限界値である。要素ブロックが保持できる要素数の最小値・最大値そのものであり、この範囲を超える容量制限を要素ブロックに設定することはできない。この関数は、そのハード制限をmin・maxメンバに設定したhive_limitsを返す静的メンバ関数である。
ユーザーがhiveのコンストラクタやreshapeに渡す容量制限(hive_limits)は、必ずこのハード制限の範囲内でなければならない。範囲外の値を指定した場合の動作は「エラー性動作(erroneous behavior)」となる。指定した容量制限がハード制限の範囲内かどうかは、is_within_hard_limits()で事前に確認できる。
ハード制限は、ユーザーが制限を指定しなかったときに使われるデフォルト制限(block_capacity_default_limits)とは必ずしも一致しない。デフォルト制限は、処理系・ユーザー双方の最適化の余地を残すために、ハード制限より内側の値に定められることがある。
戻り値
minメンバとmaxメンバに処理系のハード制限を設定したhive_limitsオブジェクト。
計算量
定数時間。
備考
ハード制限のmaxは、std::allocator_traits<Allocator>::max_size()以下である。
例
#include <hive>
#include <print>
int main()
{
std::hive_limits limits = std::hive<int>::block_capacity_hard_limits();
std::println("min={}, max={}", limits.min, limits.max);
}
出力例
min=3, max=255
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
hive_limitshive::block_capacity_limitshive::block_capacity_default_limitshive::is_within_hard_limits