7#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_MATH_POWER_OF_2_HPP_
8#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_MATH_POWER_OF_2_HPP_
16#include "arene/base/constraints/constraints.hpp"
17#include "arene/base/contracts/contract.hpp"
18#include "arene/base/stdlib_choice/climits.hpp"
19#include "arene/base/stdlib_choice/cstddef.hpp"
20#include "arene/base/stdlib_choice/cstdint.hpp"
21#include "arene/base/stdlib_choice/enable_if.hpp"
22#include "arene/base/stdlib_choice/integer_sequence.hpp"
23#include "arene/base/stdlib_choice/is_integral.hpp"
24#include "arene/base/stdlib_choice/make_unsigned.hpp"
54inline constexpr auto power_of_2(std::uint64_t
const value)
noexcept -> std::uint64_t {
55 ARENE_PRECONDITION(value <
static_cast<std::uint64_t>(
sizeof(std::uint64_t) *
static_cast<std::uint64_t>(CHAR_BIT)));
56 constexpr std::uint64_t one{1U};
62namespace power_of_2_detail {
66template <std::size_t... Powers>
67constexpr auto make_power_of_2_sequence(std::index_sequence<>, std::index_sequence<Powers...>)
noexcept {
68 return std::index_sequence<power_of_2(Powers)...>();
73template <std::size_t First, std::size_t... IgnoredPowers, std::size_t... Powers>
75make_power_of_2_sequence(std::index_sequence<First, IgnoredPowers...>, std::index_sequence<First, Powers...>)
noexcept {
76 return make_power_of_2_sequence(std::index_sequence<IgnoredPowers...>{}, std::index_sequence<Powers...>{});
Definition array_exceptions_disabled.cpp:11
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10