Компилятор стал приводить не приводимые типы.

 
В классе есть функция:
double foo(double a, bool b, double c);

При этом, если в коде я использую ее как:

foo(2.5, true, true);

Компиляция отлично проходит, никаких ошибок не возникает, а в качестве переменной c, передается 1. Исправьте пожалуйста подобное приведение типов.

 
DrSky:
В классе есть функция:

При этом, если в коде я использую ее как:

Компиляция отлично проходит, никаких ошибок не возникает, а в качестве переменной c, передается 1. Исправьте пожалуйста подобное приведение типов.

Согласно документации (https://www.mql5.com/ru/docs/basis/types/casting). В C++ значения true/false от bool тоже конвертируются в числа 1/0 без потерь.

 
Stanislav Korotky #:

Согласно документации (https://www.mql5.com/ru/docs/basis/types/casting). В C++ значения true/false от bool тоже конвертируются в числа 1/0 без потерь.

Я понимаю, что с точки зрения хранения, тип bool это char, со значениями 0 и 1, однако, приведение типа bool к типу double во первых, лишино всякого логического смысла и в том же C/C++ компилятор требует явного приведения. Как минимум, тут уместен warning. И с чего бы это warning на приведение int и uint есть, а bool к double нет.

 
DrSky #:

Я понимаю, что с точки зрения хранения, тип bool это char, со значениями 0 и 1, однако, приведение типа bool к типу double во первых, лишино всякого логического смысла и в том же C/C++ компилятор требует явного приведения. Как минимум, тут уместен warning. И с чего бы это warning на приведение int и uint есть, а bool к double нет.

Вы что-то путаете или неясно выражаетесь. Неявное приведение из int в double без проблем, без предупреждений. Покажите пример. Предупреждения выдаются там, где есть опасность потерять точность значения.

 
Stanislav Korotky #:

Вы что-то путаете или неясно выражаетесь. Неявное приведение из int в double без проблем, без предупреждений. Покажите пример. Предупреждения выдаются там, где есть опасность потерять точность значения.

Я показал пример, когда при вызове функции, bool свободно приводится к double.

 
DrSky #:

Я показал пример, когда при вызове функции, bool свободно приводится к double.

Я просил пример, где бы выводилось предупреждение в Си, при аналогичном отсутствии предупреждения в MQL. Изначальный пример работает согласно справке - без предупреждения.

Вот это ваше высказывание требует доказательств или демо: "И с чего бы это warning на приведение int и uint есть..." На самом деле эти два типа приводятся к double также неявно, без предупреждений.