是否可以使用c++模板来控制代码生成

Is it possible to use C++ template to control code generation?

本文关键字:控制 代码生成 可以使 c++ 是否      更新时间:2023-10-16

是否可以使用c++模板来控制代码生成?

类似于(伪代码…)

template<int i, int j> void f() {
#if i > j
#define
  //code...
#else
  //code...
#endif
}

(我开始使用模板,但我想知道它们有多强大)。

谢谢!

这样的元编程通常是结合专门化和重载来完成的。在您的情况下,标记分派(将值转换为类型)是一个可行的解决方案:

#include <type_traits>
void f_impl(std::true_type) { /* ... */ }
void f_impl(std::false_type) { /* ... */ }
template <int i, int j> void f() {
  f_impl(std::integral_constant<bool, (i > j)>());
}