如何将class类型作为参数传递给函数模板进行新操作?

How to transfer a class type to a function template for new operation as a parameter?

我有一段c++代码:

#include <iostream>
#include <string>
#include <map>

static counter = 0;

class Probe
{
private:
    int supply_;
    Probe(const Probe&);

public:
    Probe()
    {
        supply_ = 10000;
    }

    int get_supply()
    {
        return supply_;
    }

};

/********************************************************************************
template<class T> T Create(int counter, T& produced)
{
    produced[counter] = new ; // ??????????????????????????????????????
    return produced;
}
************************************************************************************/

std::map<int, Probe*> CreatInitWorkers(int counter, std::map<int, Probe*> &init_workers) 
{
    init_workers[counter] = new Probe(); 
    return init_workers;
}


int main()
{ 
    std::map<int, Probe*> workers;
    for (int i = 0; i < 12; i++)
    {
        workers = CreatInitWorkers(worker_counter++, workers);
    }

    for (auto it : workers)
    {
        std::cout << it.first << std::endl;
    }
}

我想创建一个类似于 CreatInitWorkers 函数的模板函数(如星星之间所示)。但我不知道如何将 Probe class 转移到 new 操作,因为对于我的程序,还需要其他 classes。有什么办法可以做到吗?谢谢。

大致如下:

template<class T> T Create(int counter, T& produced)
{
    using C = std::remove_pointer_t<std::decay_t<decltype(produced[counter])>>;
    produced[counter] = new C();
    return produced;
}

Demo