Ошибки, баги, вопросы - страница 1619

 
Slawa:

Системная функция Point() на самом деле инлайнится и преобразуется в простой доступ к переменной _Point

Кто то говорил, как помнится, Ренат или Вы, что рекомендуется использовать Point(), Digits()... Так ли это? Я, по крайней мере, помятуя рекомедацию, так и делаю всегда. 
 
Andrey Dik:
Кто то говорил, как помнится, Ренат или Вы, что рекомендуется использовать Point(), Digits()... Так ли это? Я, по крайней мере, помятуя рекомедацию, так и делаю всегда. 

Да, всё правильно.

В следующий раз буду приводить примеры, соответствующие нашим же рекомендациям

 

Несколько вопросов и пожеланий к разработчикам.

1.  Год назад мы обсуждали в сервис-деске тему возврата значения функции по ссылке (заявка 1292558).  В итоге там заверили, что вопрос решён, и данная фича появится в конце осени (прошлого года).  Но чё-то воз и ныне там.  Можно узнать, по какой причине не реализовали?

2.  Как насчёт множественного наследования?  Мне например это очень нужно.  Хотя бы двойное наследование.

3.  Крайне необходимая для ООП вещь - ключевое слово override для виртуальных функций в производных классах. Иначе нет контроля за ними со стороны компилятора.  Где-то тип аргумента не тот поставил, где-то const забыл - и всё, это уже другая функция.  Получаем трудноуловимые ошибки.

4.  Нужна возможность перегрузки оператора приведения.

 

Также надо доработать шаблоны функций.  Сейчас у вас все typename жёстко привязаны к аргументам функции. Из-за этого невозможно реализовать многие конструкции. Например такую:

template<typename T> 
T  func()  { return T(0); }

void OnStart()
{
  func<int>();
}

Конечно это можно решить костыльным способом, через передачу фиктивных аргументов в функцию, но сами понимаете, это сильно запутывает понимание кода.

 
Alexey Navoykov:

Также надо доработать шаблоны функций.  Сейчас у вас все typename жёстко привязаны к аргументам функции. Из-за этого невозможно реализовать многие конструкции. Например такую:

Конечно это можно решить костыльным способом, через передачу фиктивных аргументов в функцию, но сами понимаете, это сильно запутывает понимание кода.

Это есть в планах, сделаем.
 

Вот ещё такое пожелание, чтобы при обнаружении ошибки внутри шаблона, компилятор указывал в логе тип переменной, вызвавшей ошибку.  Иначе бывает очень сложно искать.

Допустим такой фрагмент кода:

void F(A& a)  {  }
void F(B& a)  {  }


template<typename T> 
void    Func(T& obj)  { F(obj); }   // 'F' - no one of the overloads can be applied to the function call

Неизвестно, какому типу здесь соответствует T,  поэтому трудно определить место в программе, откуда был вызван данный шаблон.  А таких мест может быть очень много, в том числе и из других шаблонов. Приходится долго ковыряться.  А если б компилятор написал, что obj имеет тип например C, то сразу было бы понятно где искать. 

 
Билд 985 не известный баг

Открыта, Начата: 2016.07.04 06:48, #1507434

 

Скоро месяц будет .... 

 
Vladimir Pastushak:
Билд 985 не известный баг

Открыта, Начата: 2016.07.04 06:48, #1507434

 

Скоро месяц будет .... 

Админы и разработчики не уходите на выходные без ответа...

 
Всем здравствуйте. Задавал вопрос несколько страниц назад но попробую еще раз. Можно ли програмными способами сделать перелогинивание счета при обрыве связи с сервером в МТ5 ? Поиск по форумам ничего не дал.
 
Dmitri Custurov:
Всем здравствуйте. Задавал вопрос несколько страниц назад но попробую еще раз. Можно ли програмными способами сделать перелогинивание счета при обрыве связи с сервером в МТ5 ? Поиск по форумам ничего не дал.
Нет нельзя. Но переконект происходит автоматически, поэтому такой необходимости нет.
Причина обращения: