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

Achieving C++ template behaviour without having templates available

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

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

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

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

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