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

Achieving C++ template behaviour without having templates available

本文关键字:实现 C++ 情况下      更新时间:2023-10-16

是否可以(简单地)在没有可用模板的情况下实现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...