- bit[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp20[meta cpp]
namespace std {
template <class T>
constexpr T ceil2(T x);
}
整数値を2の累乗値に切り上げる。
- 型
T
が符号なし整数型であること
x
以上となる最小の2の累乗値をN
として、- 型
T
において値N
が表現できること
N
を返す
投げない
- 事前条件を満たすこと
- 値
x
を累乗値に切り上げた値が型T
の範囲内で表現できない場合、未定義動作となり、定数式にはならない
#include <iostream>
#include <bit>
void convert_to_pow2(unsigned int x)
{
std::cout << x << "\t : " << std::ceil2(x) << std::endl;
}
int main()
{
std::cout << "127\t : " << std::ceil2(127u) << std::endl;
for (unsigned int i = 0u; i <= 32u; ++i) {
convert_to_pow2(i);
}
}
- std::ceil2[color ff0000]
127 : 128
0 : 1
1 : 1
2 : 2
3 : 4
4 : 4
5 : 8
6 : 8
7 : 8
8 : 8
9 : 16
10 : 16
11 : 16
12 : 16
13 : 16
14 : 16
15 : 16
16 : 16
17 : 32
18 : 32
19 : 32
20 : 32
21 : 32
22 : 32
23 : 32
24 : 32
25 : 32
26 : 32
27 : 32
28 : 32
29 : 32
30 : 32
31 : 32
32 : 32
- C++20
- Clang: 9.0
- GCC: 9.1
- Visual C++: ??