在没有可用模板的情况下实现C ++模板行为

时间:2015-01-09 10:00:30

标签: c++ templates embedded

是否有可能(简单地)在没有模板可用的情况下实现C ++模板行为?我正在使用没有该功能的嵌入式C ++工具链,但如果我可以复制它肯定会有用。

作为一个用法示例,我想为不同类型创建许多循环缓冲区。目前,我只有一个uint8_t循环缓冲区,但我需要更多。

1 个答案:

答案 0 :(得分:3)

您不必为每个实现重写它,只需将实际定义包装在宏中:

#define GenerateCircBufClass(T)\
class CircBuf_impl_##T \
{\
public: \
  CircBuf_impl_##T(); \
  ~CircBuf_impl_##T(); \
  // etc...
};

GenerateCircBufClass(uint8_t)
GenerateCircBufClass(float)
// etc...