Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5 - страница 23

 
fxsaber # :

Если вы правы, то тогда нельзя будет обнаружить проблему, т.к. нет (сейчас) никаких предупреждений компилятора.

Понимаю. Посмотрим, может, @Ilyas ответит.

 

b5226, код стал выполняться иначе. Отсутствие предупреждений - это серьезная засада. Как убедиться, что теперь написанные коды работают правильно - не знаю.

 
b5226, проблема с оператором.
struct A
  {
   int _;
  
   // Компиляция зависит от наличия/отсутствия этого оператора.
   void operator=( short x )
     {
      Print(__FUNCSIG__);
     }
  };
  
struct B : A
  {   
//   using A::operator=;
   
   void operator=( string x )
     {
      Print(__FUNCSIG__);
     }
  };

void OnStart()
  {
   B b;
   b=100;    // cannot convert parameter 'const int' to 'const B&'
  }

Ожидался warning "implicit conversion from 'number' to 'string'".

Строка для поискаOshibka 143.

 
Я не гений программирования, и планка вхождения в ООП для меня и раньше была высокой. С несколькими последними ужесточениями она стала ещё выше. Думаю, я не одинок.
 
Edgar Akhmadeev #:
Я не гений программирования, и планка вхождения в ООП для меня и раньше была высокой. С несколькими последними ужесточениями она стала ещё выше. Думаю, я не одинок.

Все наоборот, стало лучше и четче. Увеличение проверок приводит к уменьшению ошибок и разных вариантов неопределенного поведения.

Просто парочка человек любит заниматься самострелом и выискивает способы самоубиться кодом. Что, впрочем, полезно для всех.

 
Renat Fatkhullin #:

Просто парочка человек любит заниматься самострелом и выискивает способы самоубиться кодом. Что, впрочем, полезно для всех.

Напоминаю, что Вы получаете полностью бесплатное (для Вас) бета-тестирование с лаконичными технически-воспроизводимыми баг-репортами.


Ну и на тему скорости, вот пример (актуален в b5226), когда показано ускорение работы компилятора на 40% за счет "выискивания".

Особенности языка mql5, тонкости и приёмы работы - Задача решена. Попробуйте создать объект, у которого обращение к индексу идет БЫСТРЕЕ, чем в массиве.
Особенности языка mql5, тонкости и приёмы работы - Задача решена. Попробуйте создать объект, у которого обращение к индексу идет БЫСТРЕЕ, чем в массиве.
  • 2025.07.18
  • www.mql5.com
где массив указателей на блоки кода индексируется по номеру случая во время выполнения. Большое количество или сложные переключатели не получат такой оптимизации таблицы переходов и останутся в виде нескольких if-else
 
fxsaber #:

b5219, получилось привести проекты к рабочему состоянию. Спасибо.

b5226 - полный швах снова. Просто начать использовать using не выходит - требуется проверка.

 
b5226, терпимо, конечно.
struct A
{
  int Tmp;    
};

struct B : public A
{
  using A::operator=; // Во всей цепочке наследования нужно прописывать подобную строку.
};

struct C : public B
{
  using B::operator=; // Во всей цепочке наследования нужно прописывать подобную строку.
};

void OnStart()
{
  A a;
  C c;
  
  c = a; // Просто обновить A-поля в C-структуре.
}
 
fxsaber #:

Напоминаю, что Вы получаете полностью бесплатное (для Вас) бета-тестирование с лаконичными технически-воспроизводимыми баг-репортами.


Ну и на тему скорости, вот пример (актуален в b5226), когда показано ускорение работы компилятора на 40% за счет "выискивания".

Поэтому и написал: это полезно для всех.

Спасибо всем участникам, мы стараемся сделать наши продукты лучше.