Сообщение Приведение константного числа к нужному типу в точке использ от 08.10.2019 7:08
Изменено 08.10.2019 7:26 DDDX
Приведение константного числа к нужному типу в точке использования
Visual Studio (2013-1019).
Сражаюсь с предупреждениями 4-го уровня.
Пример
Компилятор выдает предупреждение для нуля, передаваемого в std::fill:
Я не хочу заморачиваться с приведением нуля к нужному типу (char, в данном случае).
Используется так:
Все, предупреждений нет.
Вопрос — это нормальный велосипед? Или есть решения получше?
---
PS. У меня есть еще "t_numeric_initializator<-1> negative_one" для схожих проблем с -1.
Сражаюсь с предупреждениями 4-го уровня.
Пример
int main()
{
char chs[10];
std::fill(std::begin(chs),std::end(chs),0);
std::cout << "Hello World!\n";
return 0;
}
Компилятор выдает предупреждение для нуля, передаваемого в std::fill:
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: '=': conversion from 'const _Ty' to '_Ty', possible loss of data
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: with
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: [
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: _Ty=int
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: ]
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: and
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: [
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: _Ty=char
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: ]
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : see reference to function template instantiation 'void std::fill<_Ty*,int>(const _FwdIt,const _FwdIt,const int &)' being compiled
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : with
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : [
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : _Ty=char,
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : _FwdIt=char *
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : ]
Я не хочу заморачиваться с приведением нуля к нужному типу (char, в данном случае).
Поэтому, для устранения предупреждения, применяю такую штуку: | |
| |
Используется так:
int main()
{
char chs[10];
std::fill(std::begin(chs),std::end(chs),structure::zero);
std::cout << "Hello World!\n";
return 0;
}
Все, предупреждений нет.
Вопрос — это нормальный велосипед? Или есть решения получше?
---
PS. У меня есть еще "t_numeric_initializator<-1> negative_one" для схожих проблем с -1.
Приведение константного числа к нужному типу в точке использ
Visual Studio (2013-2019).
Сражаюсь с предупреждениями 4-го уровня.
Пример
Компилятор выдает предупреждение для нуля, передаваемого в std::fill:
Я не хочу заморачиваться с приведением нуля к нужному типу (char, в данном случае).
Используется так:
Все, предупреждений нет.
Вопрос — это нормальный велосипед? Или есть решения получше?
---
PS. У меня есть еще "t_numeric_initializator<-1> negative_one" для схожих проблем с -1.
Сражаюсь с предупреждениями 4-го уровня.
Пример
int main()
{
char chs[10];
std::fill(std::begin(chs),std::end(chs),0);
std::cout << "Hello World!\n";
return 0;
}
Компилятор выдает предупреждение для нуля, передаваемого в std::fill:
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: '=': conversion from 'const _Ty' to '_Ty', possible loss of data
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: with
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: [
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: _Ty=int
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: ]
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: and
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: [
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: _Ty=char
1>C:\VS-BLA-BLA\include\xutility(2253,24): warning C4244: ]
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : see reference to function template instantiation 'void std::fill<_Ty*,int>(const _FwdIt,const _FwdIt,const int &)' being compiled
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : with
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : [
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : _Ty=char,
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : _FwdIt=char *
1>D:\MY-BLA-BLA\ConsoleApplication1\ConsoleApplication1.cpp(10): message : ]
Я не хочу заморачиваться с приведением нуля к нужному типу (char, в данном случае).
Поэтому, для устранения предупреждения, применяю такую штуку: | |
| |
Используется так:
int main()
{
char chs[10];
std::fill(std::begin(chs),std::end(chs),structure::zero);
std::cout << "Hello World!\n";
return 0;
}
Все, предупреждений нет.
Вопрос — это нормальный велосипед? Или есть решения получше?
---
PS. У меня есть еще "t_numeric_initializator<-1> negative_one" для схожих проблем с -1.