C++ 如何将3个功能合并为一个?

C++ 如何将3个功能合并为一个?,c++,C++,我需要把所有的东西结合起来,但我不知道怎么做,甚至没有任何提示可以做到这一点 如果这是不可能的,写一个答案,这样我就不会寻找一种方法来实现这一点 template <class T1, class T2, class T3> auto vector_ptr(T1& size, T2& size2, T3& size3) { auto result = make_shared<vector<vector<vector<int64_

我需要把所有的东西结合起来,但我不知道怎么做,甚至没有任何提示可以做到这一点

如果这是不可能的,写一个答案,这样我就不会寻找一种方法来实现这一点

template <class T1, class T2, class T3>
auto vector_ptr(T1& size, T2& size2, T3& size3) {
    auto result = make_shared<vector<vector<vector<int64_t>>>>(size, vector<vector<int64_t>>(size2, vector<int64_t>(size3)));
    return *result;
}

template <class T1, class T2>
auto vector_ptr(T1& size, T2& size2) {
    auto result = make_shared<vector<vector<int64_t>>>(size, vector<int64_t>(size2));
    return *result;
}

template <class T1>
auto vector_ptr(T1& size) {
    auto result = make_shared<vector<int64_t>>(size);
    return *result;
}
如有必要,等等

auto v_arr4 = vector_ptr(size4, size3, size2, size);

@SamVarshavchik我相信OP需要一个参数数量动态的方法(而不是像实现中那样固定)。对吧,平奇?如果没有,我们可以删除副本。@gsamaras,Sergey Kolesnik是的,我想这就是你要找的。祝你好运很抱歉,这已经结束了,因为这是一个非常有趣的任务(虽然标题需要一些严肃的澄清)。@WhozCraig谢谢。这个链接就是我问题的答案,问题已经解决了。@pinki我怀疑可能是这样的。祝你好运
auto v_arr4 = vector_ptr(size4, size3, size2, size);
#include <memory>
#include <type_traits>
#include <vector>

template<class T, class Head>
auto
make_vector(Head size)
{
    return std::vector<T>(size);
}

template<class T, class Head, class ...Args,
         std::enable_if_t<(sizeof...(Args) > 0), int> = 0>
auto
make_vector(Head size, Args... args)
{
    return std::vector(size, make_vector<T, Args...>(args...));
}

template<class T, class ...Args>
auto
vector_ptr(Args... args)
{
    using vector_type = decltype(make_vector<T>(args...));
    return std::make_shared<vector_type>(make_vector<T>(args...));
}
template<class T, class Head, class ...Args>
auto
make_vector(Head size, Args... args)
{
    if constexpr (sizeof...(Args) > 0)
        return std::vector(size, make_vector<T, Args...>(args...));
    else
        return std::vector<T>(size);
}