Это очень простой (не разрушительный) способ сделать это, хотя, возможно, и не оптимальный:
#include <iostream>
#include<tuple>
#include<cassert>
using namespace std;
template <typename... types>
void print(types... Params){
long Param1 = std::get<0>(std::tie(Params...));
long Param2 = std::get<1>(std::tie(Params...));
assert(Param1 == 123 and Param2 == 456);
}
int main(){
print(123, 456);
}
https://godbolt.org/z/V8VA0W
Если все элементы одного типа (и предполагается, чтовы можете скопировать их):
#include <iostream>
#include<tuple>
#include<cassert>
using namespace std;
template <typename... types>
void print(types... Params){
std::array<long, sizeof...(Params)> params = {Params...};
long Size = params.size();
long Param1 = params[0];
long Param2 = params[1];
assert(Size == 2 and Param1 == 123 and Param2 == 456);
}
int main(){
print(123, 456);
}
Это не ясно из вашего вопроса, но похоже, что вы хотите напечатать все элементы в списке, если вы просто хотите сделать это, то вы можете сделать это какследует (требуется C ++ 17, но вы можете сделать это с некоторой работой в c ++ 11):
#include <iostream>
using namespace std;
template <typename... types>
void print(types... Params){
std::cout << "number of elements: " << sizeof...(Params) << " ";
((std::cout << Params), ...);
}
int main(){
print(123, 456);
}