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

[Удален]  
Vladimir Pastushak:

С чего Вы взяли что угол будет измеряться от Вашего квадрата ?

Угол измеряется относительно цены и масштаба графика.

Приведите график к 1 пункту на 1 пиксель и получите свои 45 градусов.

Думал угол измеряется относительно первой точки трендлинии в пикселях. Квадрат выступал примерным ориентиром. Спасибо за ответ.

 
Evgeniy Zhdan:

Нашли причину? А то у меня тоже вчера началось такое. Что-то с котировками, кажется

Дайте ссылку на сообщение. А то уже и не помню. ....
 

Баг МТ5 (build 2375) при вызове функции для аргумента с типом данных color применяется implicit type conversation не смотря на то, что имеется подходящая по сигнатуре перегруженная шаблонная функция с типом данных color.
Было очень сложно отловить и воспроизвести данный баг, так как проблема касается только случаев, когда в виде аргумента шаблонной функции используется шаблонный класс, а его шаблонный параметр соответствует шаблонному параметру функции.

#define PRINT(x) ; Print(#x, ":", string(x))

template<typename T>
class A : public T{};

class B {};
class C : public A<B>{};


template<typename _Tp>
class D{
   template<typename T>
   void test(const A<T>&, const long){PRINT(__FUNCSIG__);}
   
   template<typename T>
   void test(const A<T>&, const ulong){PRINT(__FUNCSIG__);}
   
   template<typename T>
   void test(const A<T>&, const color){PRINT(__FUNCSIG__);}
    
public:
   D(){
      C c;
      _Tp value = {};
      test(c, value);   // 'test' - ambiguous call to overloaded function
   }
};


void OnStart(){
   D<long> d_long;      // Ok
   D<ulong> d_ulong;    // Ok
   D<color> d_color;    // Compile Error
}
 
Что здесь за проблема?
void OnStart()
{
  class CLASS
  {
  public:
    template <typename T> // template declarations are not allowed in local classes
    static void f( T ) {}
  };
  
  int i = 0;
  
  CLASS::f(i);
}


Раньше работало.

 
fxsaber:
Что здесь за проблема?


Раньше работало.

Объявление класса внутри функции?

 
Stanislav Korotky:

Объявление класса внутри функции?

в MQL это можно делать, нигде такого не видел, но это работает, с шаблонами правда не пробовал

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

т.е. "обернуть в функцию класс" - кактотак

 
Stanislav Korotky:

Объявление класса внутри функции?

Без шаблонов работает.

 
Баг МТ5(build 2375) ошибка компиляции при вызове функции через ее указатель, когда используется массив указателей на функцию:

#define PRINT(x) ; Print(#x, ":", string(x))

void test(){
   PRINT(__FUNCSIG__);
}

template<typename T>
void call(T f_ptr){
   f_ptr();
}


template<typename T>
class A{
public:
   T arr_1[1];
   
   typedef void (*ff)();
   ff arr_2[1];  
   
   
   T test_1(){
      return arr_1[0];
   } 
   
   ff test_2(){
      return arr_2[0];
   } 
   
   T operator[](int index){
      return arr_1[index];
   }
};

void OnStart(){
   typedef void (*ff)();
   ff arr[1];
   arr[0] = test;   
   
   ff f_ptr = arr[0];
   f_ptr();             //Ok
   call(arr[0]);        //Ok
   arr[0]();            //Compile Error: ')' - expression expected   
   
   
   A<ff> a;             
   a.arr_1[0] = test;
   a.arr_2[0] = test;
   
   
   a.arr_1[0]();        //Compile Error: ')' - expression expected   
   a.arr_2[0]();        //Compile Error: ')' - expression expected   
   
   a.test_1()();        //Compile Error: ')' - expression expected   
   a.test_2()();        //Compile Error: ')' - expression expected   
   
   a[0]();              //Ok ???
}


 
Sergey Dzyublik:
Баг МТ5(build 2375) ошибка компиляции при вызове функции через ее указатель, когда используется массив указателей на функцию:

Очень древний баг.

 

Кто подскажет - в МетаЕдиторе открытые окна файлов, где их список  сохраняется для открытия их в дальнейшем?

Периодически МЕ открывается с чистого листа, хотя до этого было открыто куча файлов. Возможно связано с обновлениями.

Хочу вручную бэкапить список, ну или может как-то по другому решается?