C++ 习语(或模式)具有从 `NameBase` class 到模板 `Name` class 的继承

C++ idiom (or pattern) with interheritance from `NameBase` class to template `Name` class

我有时会在不同的 C++ 项目中遇到以下(或类似的)class 层次结构:

class DummyBase
{
   public:
      virtual ~DummyBase() {}
      virtual void doSomething() = 0;
};

template<typename T>
class Dummy : public DummyBase
{
    public:
        void doSomething() override
        {
            ...
        }

    private:
        T field;
};

看起来像 C++ 惯用语、模式或技巧。你能告诉我这个结构的目的以及使用它可以解决什么问题吗?我很乐意阅读描述它的好文章或书籍。

这是基于多态性的 type erasure,它通常用于处理诸如 std::functionstd::any 之类的事情,它们可以以完全相同的方式存储不相关类型的数据(例如函数指针和 std::function).

的成员函数指针