变量函数int到size_t警告

时间:2016-10-07 21:09:22

标签: c++ c++11 variadic variadic-functions

我有一个函数接受多个参数。

#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_tint。谢谢。

0 个答案:

没有答案