use*_*759 1 c++ macros templates code-generation
是否可以使用C++模板来控制代码生成?
像(伪代码......)
template<int i, int j> void f() {
#if i > j
#define
//code...
#else
//code...
#endif
}
Run Code Online (Sandbox Code Playgroud)
(我开始习惯模板,但我想知道它们有多强大).
谢谢!
Ker*_* SB 10
像这样的元编程通常是通过专门化和重载的组合来完成的.在您的情况下,标签调度(将值转换为类型)是一个可行的解决方案:
#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)>());
}
Run Code Online (Sandbox Code Playgroud)