variant_constexpr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
variant<true_type, false_type> is_integral_(bool now) {
if (now) {
return true_type{};
} else {
return false_type{};
}
}

void fun(int a, int c) {
auto has_a = is_integral_(a == 0);
std::visit(
[&](auto has_a_) {
if constexpr (has_a_) {
static int b = printf("1l");
} else {
static int b = printf("2l");
}
},
has_a);
/// 作用:将for内的if转到for外,实际效果同,而这边只是让他变成了一个类型上的东西,并结合visit和variant让他能够自动生成
if(a == 0) {
for...
}else {
for...
}
}

int main() {
fun(1, 3);
fun(0, 3);
}

variant_constexpr
https://lhish.github.io/project/hide/variant_constexpr/
作者
lhy
发布于
2025年8月16日
许可协议