先贴代码:
#include <stdio.h>

template <int v>
struct Int2Type

...{

enum ...{ value = v };
};

void func(Int2Type<true>)

...{
printf("true ");
}

void func(Int2Type<false>)

...{
printf("false ");
}

template <bool value>
void func()

...{
func(Int2Type<value>());
}

int main()

...{
func<true>();
func<false>();
return 1;
}
上一例子是在同一函数中实现条件编译,而本例是通过函数重载来实现条件编译。
#include <stdio.h>
template <int v>
struct Int2Type
...{
enum ...{ value = v };
};
void func(Int2Type<true>)
...{
printf("true ");
}
void func(Int2Type<false>)
...{
printf("false ");
}
template <bool value>
void func()
...{
func(Int2Type<value>());
}
int main()
...{
func<true>();
func<false>();
return 1;
}
本文介绍了一个使用C++模板元编程实现条件编译的例子。通过函数重载的方式,根据不同的模板参数选择执行不同的分支代码,实现了运行时条件判断的功能。文章展示了如何定义特化模板结构体并基于此进行函数重载,最终实现逻辑分支的选择。
799

被折叠的 条评论
为什么被折叠?



