C ++ - 成语

时间:2017-03-16 21:28:11

标签: c++ terminology idioms

这个成语帮助我解决了几个问题,但我不知道这是怎么称呼的,谷歌搜索没有帮助。其目的是在异构集合中存储不同的模板类,众所周知的示例用法是std::any

class TemplateBase
{
public:
    virtual void f() = 0;
    virtual ~TemplateBase() {}
};

template<typename T>
class TemplateImplementation : public TemplateBase
{
    T data;
public:
    virtual void f() override
    {
        // some T-specific implementation
        std::cout << data << std::endl;
    }
};

std::vector<std::unique_ptr<TemplateBase>> collection;
collection.emplace_back(new TemplateImplementation<int>{1});
collection.emplace_back(new TemplateImplementation<std::string>{"hello"});

1 个答案:

答案 0 :(得分:0)

GManNickG在对OP的评论中回答,这个成语被称为类型擦除。谢谢!