DeusExMachina
DeusExMachina

Reputation: 1

packed container parameters c++

I am trying to make a function that takes an undefined number of parameters. The parameters are all containers of the same type. The function returns the size of the largest container. here's what I've tried so far.

template<template<typename> class... container, typename T>
int min_size(container<T>... c){
    vector<container<T>...> temp;
    temp.push_back(c...);
    int min=0;
    for (int i =0; i< temp.size();i++){
        if (min > temp[i].size()) min = temp[i].size();
    }
    return min;
} 
int main() {
    vector v1 ={1,2,3};
    vector v2 ={1,2,3,4,5};
    vector v3 ={1,2,3,4};
    cout<< min_size(v1,v2,v3)<<endl;
    return 0;
}

This code returns this error: wrong number of template arguments (3, should be at least 1) vector container T ... temp;

Upvotes: 0

Views: 36

Answers (1)

Jarod42
Jarod42

Reputation: 217293

vector<container<T>...> temp; would produce vector<container1<T>, container2<T>, .., containerN<T>> temp; which is wrong.

You might simply do:

template<template<typename> class... container, typename T>
int min_size(container<T>... c){
    return std::min({c.size()...});
}

Upvotes: 2

Related Questions