我有一个函数接受多个参数。
#include <iostream>
#include <cstdarg>
#include <vector>
using namespace std;
template<typename... Values>
void doSomething(size_t input, Values... inputs)
{
size_t len = sizeof...(Values) + 1;
size_t vals[] = {input, inputs...};
vector<size_t> n(len);
std::copy( vals, vals+len, n.data() );
for(size_t i=0; i<len; i++) cout<<n[i]<<endl;
//Do something with n vector
}
当我通过以下方式调用此函数时,它工作正常:
size_t a(1), b(2), c(3);
doSomething(a,b,c);
但是,当我通过以下方式调用此函数时会出现问题:
doSomething(1,2,3);
它会发出警告信息:
warning: narrowing conversion of ‘inputs#0’ from ‘int’ to ‘size_t {aka long unsigned int}’ inside { } [-Wnarrowing]
size_t vals[] = {inputs...};
我不喜欢这条警告信息,有没有办法解决这个问题?我希望该函数能够接受size_t
或int
。谢谢。