我正在使用 Visual Studio 2013,并且我有如下代码:
void f()
{
std::vector<short> vecshort(10);
std::vector<long> veclong(10);
std::copy(veclong.begin(), veclong.end(), vecshort.begin());
}
这会发出警告:
warning C4244: '=' : conversion from 'long' to 'short', possible loss of data
问题是真正的代码在某些模板中。用户可以实例化模板以使该警告发生,但代码的逻辑可防止任何实际的数据丢失。我怎样才能以一种很好的方式抑制这个警告?如果它不在std::copy
我可以放一个演员表。
编辑:该代码将在其他编译器中使用,我不赞成使用编译指示。