Дефекты в работе кеша шаблонной функции/класса: (не исправлено MT5(build 2361)) *** (up) Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь... (не исправлено MT5(build 2361)) * Compile Error, баг при передаче в качестве const ref template аргумента указателя на функцию. (не исправлено MT5(build 2361)) * Compile Error, объект B<int> можно создать после объекта класса B<void*>, но если сделать это перед, то возникает ошибка компиляции.
Дефекты в работе шаблонной функции/класса: (не исправлено MT5(build 2361)) *** (up) Compile Error, баг внутри шаблонной функции, переданный указатель в рамках операции явного приведения типа ведет себя как класс в остальных случаях - как указатель. (не исправлено MT5(build 2361)) ** Compile Error, баг с генерацией кода шаблонного класса при использовании internal class. (не исправлено MT5(build 2361)) ** Compile Error, баг при попытке доступа к internal class для шаблонного параметра шаблонной функции. (не исправлено MT5(build 2361)) * Compile Error, баг при генерации шаблонного метода/класса, процесс "автозамены" шаблонного параметра выходит за пределы скоупа в основной код программы. (не исправлено MT5(build 2361)) * Compile Error, баг с отсутствием автоматической генерации кода шаблонного класса, когда шаблонный класс выступает в качестве return value для шаблонного метода. (не исправлено MT5(build 2361)) * Compile Error, баг при передаче internal struct в шаблонную функцию, полученный тип данных невозможно использовать как базовый тип данных для другой internal struct в шаблонном классе. (не исправлено MT5(build 2361)) * Compile Error, баг при вызове шаблонной функции с явным указанием типов аргументов, когда вызов выполняется из перегруженной нешаблонной функции. (не исправлено MT5(build 2361)) Compile Error, баг при определении internal class - отсутствует возможность явно сослаться на глобальное пространство имен при указании базового класса. (не исправлено MT5(build 2361)) *** (new) Compile Error, Основная претензия к неуместному выводу warning - "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version". Текущая реализация - это стрельба с пушки по воробьям. (не исправлено MT5(build 2361)) ** (new) Compile Error, баг касается возвращаемого значения шаблонной функции, когда возвращаемое значение - internal class, расположенный внутри шаблонного класса, тип параметра которого задается типом аргумента шаблонной функции. (не исправлено MT5(build 2361)) * (new) Compile Error, не выполняется проверка на наличие повторно использованных имен шаблонных типов при объявлении шаблонной функции внутри шаблонного класса, что приводит к неожидаемому поведению. (не исправлено MT5(build 2361)) * (new) Runtimer Error, в конструкторе базового класса невозможно выполнить explicit typecast по приведению указателя на объект базового класса к указателю на родительский класс. (не исправлено MT5(build 2361)) (new) Compile Error, множество дефектов связанных с return "in place created" object, когда объектом выступает шаблонный класс/структура.
Дефекты связанные с несоответствием приоритетов вызовов перегруженных функций в MQL в сравнении с С++: (не исправлено MT5(build 2361)) *** Compile Error, когда есть наследование классов A <= B <= C <= D и реализованы две overloading функции, например одна c параметра А*, а вторая с B*, то передача в такую функцию объекта C* или D* в MQL вызывает ошибку компиляции "ambiguous call to overloaded function". (не исправлено MT5(build 2361)) ** Runtime, Несоответствие приоритетов для вызовов перегруженных шаблонных функций. (не исправлено MT5(build 2361)) ** Compile Error, приоритет вызовов перегруженных шаблонных функций в действительности зависит от типа шаблонного параметра, который, в теории ни как не должен влиять на результат компиляции. (не исправлено MT5(build 2361)) ** Compile Error, при генерации кода шаблонной функции возникает ошибка компиляции несмотря на то, что имеется перегруженная шаблонная функция с подходящей сигнатурой для передаваемых параметров.
Дефекты связанные с медленным выполнением функций, работой оптимизатора кода: (не исправлено MT5(build 2361)) ** (new) Runtime, большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, не смотря на то, что память для них была заранее зарезервирована, например для структур аж до 7-ми раз медленнее.
Предложения: ссылка - о предоставлении возможности передавать литералы и временные переменные в виде const ref аргументов функции. ссылка - при перемещении файлов проекта во вкладке "Project", для перемещаемых файлов, которые открыты и находятся во вкладках ME, автоматически обновлять их путь расположения. ссылка - о необходимости введения в MQL typedef declaration функциональности. ссылка - о предоставлении возможности принудительной генерации дефолтных конструкторов копирования и операторов присвоения.
Очередная встреча с ранее описанным багом - "Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...". Фактически день ушел на локализацию, воспроизведение и поиск обходных путей, к сожалению все безрезультатно...
Наконец-то удалось найти приемлемое решение. Оказывается использование статического члена класса дает возможность обойти вышеописанный баг:
template<typename _Tp, typename _Opt>
struct It_g{
class Opt : public _Opt{};
_Tp p;
static Opt opt;
};
template<typename _Tp, typename _Opt>
static It_g::Opt It_g::opt;template<typename _Tp>
class A_g{
public:
struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};
template<typename _Tp>
class V{
public:
struct It : public A_g<_Tp>::It{};
It b;
};
template<typename _Tp>
class Opt_g{
template<typename _It>
staticvoid test(_It &it){
printf(typename(_Tp)); // ClassA*printf(typename(it.p)); // ClassA*
_Tp p = it.p; // OK
};
};
template<typename _It>
void test(_It &it){
it.opt.test(it);
}
class ClassA{};
voidOnStart(){
V<int> v1;
test(v1.b);
V<ClassA*> v2;
test(v2.b);
V<int>::It it3;
test(it3);
V<ClassA*>::It it4;
test(it4);
}
Ребят, я взял работку во фрилансе. Заказчик скинул мне файл в последний момент. Очень похоже на декомпил. Хочу сначала убедиться что это так перед жалобой. Прикладываю кусок кода.
int f0_0(string As_0, int &Ai_8, int &Aia_12[]) {
string Ls_16;
if (StringLen(As_0) == 0) return (-1);
string Ls_24 = As_0;
int Li_32 = 0;
Ai_8 = 0;
ArrayResize(Aia_12, Ai_8);
while (StringLen(Ls_24) > 0) {
Li_32 = StringFind(Ls_24, ",");
if (Li_32 > 0) {
Ls_16 = StringSubstr(Ls_24, 0, Li_32);
Ls_24 = StringSubstr(Ls_24, Li_32 + 1, StringLen(Ls_24));
} else {
if (StringLen(Ls_24) > 0) {
Ls_16 = Ls_24;
Ls_24 = "";
}
}
if (f0_2(Ls_16, Ai_8, Aia_12) == 0) return (-2);
}
return (1);
}
Одна из функций. Все переменные и функции выглядят как то так.
Ребят, я взял работку во фрилансе. Заказчик скинул мне файл в последний момент. Очень похоже на декомпил. Хочу сначала убедиться что это так перед жалобой. Прикладываю кусок кода.
Одна из функций. Все переменные и функции выглядят как то так.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Дефекты в работе кеша шаблонной функции/класса:
(не исправлено MT5(build 2361)) *** (up) Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...
(не исправлено MT5(build 2361)) * Compile Error, баг при передаче в качестве const ref template аргумента указателя на функцию.
(не исправлено MT5(build 2361)) * Compile Error, объект B<int> можно создать после объекта класса B<void*>, но если сделать это перед, то возникает ошибка компиляции.
Дефекты в работе шаблонной функции/класса:
(не исправлено MT5(build 2361)) *** (up) Compile Error, баг внутри шаблонной функции, переданный указатель в рамках операции явного приведения типа ведет себя как класс в остальных случаях - как указатель.
(не исправлено MT5(build 2361)) ** Compile Error, баг с генерацией кода шаблонного класса при использовании internal class.
(не исправлено MT5(build 2361)) ** Compile Error, баг при попытке доступа к internal class для шаблонного параметра шаблонной функции.
(не исправлено MT5(build 2361)) * Compile Error, баг при генерации шаблонного метода/класса, процесс "автозамены" шаблонного параметра выходит за пределы скоупа в основной код программы.
(не исправлено MT5(build 2361)) * Compile Error, баг с отсутствием автоматической генерации кода шаблонного класса, когда шаблонный класс выступает в качестве return value для шаблонного метода.
(не исправлено MT5(build 2361)) * Compile Error, баг при передаче internal struct в шаблонную функцию, полученный тип данных невозможно использовать как базовый тип данных для другой internal struct в шаблонном классе.
(не исправлено MT5(build 2361)) * Compile Error, баг при вызове шаблонной функции с явным указанием типов аргументов, когда вызов выполняется из перегруженной нешаблонной функции.
(не исправлено MT5(build 2361)) Compile Error, баг при определении internal class - отсутствует возможность явно сослаться на глобальное пространство имен при указании базового класса.
(не исправлено MT5(build 2361)) *** (new) Compile Error, Основная претензия к неуместному выводу warning - "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version". Текущая реализация - это стрельба с пушки по воробьям.
(не исправлено MT5(build 2361)) ** (new) Compile Error, баг касается возвращаемого значения шаблонной функции, когда возвращаемое значение - internal class, расположенный внутри шаблонного класса, тип параметра которого задается типом аргумента шаблонной функции.
(не исправлено MT5(build 2361)) * (new) Compile Error, не выполняется проверка на наличие повторно использованных имен шаблонных типов при объявлении шаблонной функции внутри шаблонного класса, что приводит к неожидаемому поведению.
(не исправлено MT5(build 2361)) * (new) Runtimer Error, в конструкторе базового класса невозможно выполнить explicit typecast по приведению указателя на объект базового класса к указателю на родительский класс.
(не исправлено MT5(build 2361)) (new) Compile Error, множество дефектов связанных с return "in place created" object, когда объектом выступает шаблонный класс/структура.
Дефекты связанные с несоответствием приоритетов вызовов перегруженных функций в MQL в сравнении с С++:
(не исправлено MT5(build 2361)) *** Compile Error, когда есть наследование классов A <= B <= C <= D и реализованы две overloading функции, например одна c параметра А*, а вторая с B*, то передача в такую функцию объекта C* или D* в MQL вызывает ошибку компиляции "ambiguous call to overloaded function".
(не исправлено MT5(build 2361)) ** Runtime, Несоответствие приоритетов для вызовов перегруженных шаблонных функций.
(не исправлено MT5(build 2361)) ** Compile Error, приоритет вызовов перегруженных шаблонных функций в действительности зависит от типа шаблонного параметра, который, в теории ни как не должен влиять на результат компиляции.
(не исправлено MT5(build 2361)) ** Compile Error, при генерации кода шаблонной функции возникает ошибка компиляции несмотря на то, что имеется перегруженная шаблонная функция с подходящей сигнатурой для передаваемых параметров.
Дефекты связанные с медленным выполнением функций, работой оптимизатора кода:
(не исправлено MT5(build 2361)) ** (new) Runtime, большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, не смотря на то, что память для них была заранее зарезервирована, например для структур аж до 7-ми раз медленнее.
Предложения:
ссылка - о предоставлении возможности передавать литералы и временные переменные в виде const ref аргументов функции.
ссылка - при перемещении файлов проекта во вкладке "Project", для перемещаемых файлов, которые открыты и находятся во вкладках ME, автоматически обновлять их путь расположения.
ссылка - о необходимости введения в MQL typedef declaration функциональности.
ссылка - о предоставлении возможности принудительной генерации дефолтных конструкторов копирования и операторов присвоения.
Визуализатор по архитектурным причинам не всегда показывает актуальное состояние.
Спасибо, буду иметь в виду.
Лечится пуском нескольких тиков (F12) после постановки на паузу.
Лечится пуском нескольких тиков (F12) после постановки на паузу.
Спасибо. Попробую.
Очередная встреча с ранее описанным багом - "Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...".
Фактически день ушел на локализацию, воспроизведение и поиск обходных путей, к сожалению все безрезультатно...
Наконец-то удалось найти приемлемое решение.
Оказывается использование статического члена класса дает возможность обойти вышеописанный баг:
Как исправить эту ошибку хранилища?
Постепенно отказывает сохранять всё больше и больше файлов. Скоро всё, что хранится будет невозможно актуализировать.
Неправильно рассчитываются прибыли/убытки во всплывающей подсказке для buy stop limit ордеров и для sell stop limit ордеров.
Ребят, я взял работку во фрилансе. Заказчик скинул мне файл в последний момент. Очень похоже на декомпил. Хочу сначала убедиться что это так перед жалобой. Прикладываю кусок кода.
Одна из функций. Все переменные и функции выглядят как то так.
Ребят, я взял работку во фрилансе. Заказчик скинул мне файл в последний момент. Очень похоже на декомпил. Хочу сначала убедиться что это так перед жалобой. Прикладываю кусок кода.
Одна из функций. Все переменные и функции выглядят как то так.