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

 
A100:
Если разница огромная, то почему тогда в С++ нормально компилируются оба варианта?

Вот не авторитет совсем C++  в данном случае, т.к. основывал заключения на логике. Выше переделал пример с распринтовкой.

Стоит всего лишь сделать такую замену

// typedef void (*fn)();
typedef void (*fn123)();

Как распринтовываться будет совсем другое. Можно попросить, чтобы компилятор был "умнее дурака" и действовал, как в C++. Но это спорное решение на самом деле.

Т.е. такую "помощь" можно осуществить в компиляторе, но разницу в подходах показал.

 
A100:
нормально. А какая разница?

видимо при простой передаче для компилятора f не воспринимается как указатель на функцию.

 
Комбинатор:

видимо при простой передаче для компилятора f не воспринимается как указатель на функцию.

Согласен (все просто и по сути нет никакой разницы)
 
Комбинатор:

видимо при простой передаче для компилятора f не воспринимается как указатель на функцию.

И не должен, хотя бы из-за неоднозначности

typedef void (*fn)();

template<typename T>
void g( T Value ) { Print(typename(Value)); }
void f() {}

void g( fn Value ) { Print(typename(Value)); }
void OnStart()
{
  g( f ); // void(*fn)()

  int f = 0;  
  g( f ); // int
}
 
fxsaber:

И не должен, хотя бы из-за неоднозначности

В исходном примере не было такой неоднозначности... вы ее сами создали... и ею же все объяснили
 
fxsaber:

И не должен, хотя бы из-за неоднозначности

В оригинале typedef это alias для типа, а не другой тип, поэтому  на самом деле большой вопрос к разработчикам почему в названии типа выводится не тип а его алиас.
 

Ошибка при компиляции

struct A {
                void f() {}
        static  void f( int ) {}
};
template<typename T>
void g( T ) {}
void f( int ) {}
typedef void (*fn)( int );
void OnStart()
{
        g(  (fn)   f ); //(1) нормально
        g(  (fn)A::f ); //(2) error: '(void(*fn)(int))' - cannot resolve function address
        fn ff = A::f;
        g( ff        ); //(3) нормально
}

Если (1) нормально, то почему ошибка в (2) если (3) нормально??? 
 
Комбинатор:
В оригинале typedef это alias для типа, а не другой тип, поэтому  на самом деле большой вопрос к разработчикам почему в названии типа выводится не тип а его алиас.

Соглашусь.

 

A100:

template<typename T>
string typeof( T ) { return typename T; }

Просьба пояснить typeof. Поиском не нашел нормального объяснения не для опытных программеров.

 
Во время одиночного прогона и визуализации логи заполняются тысячами записей такого рода
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   take profit triggered #251 sell 1.00 EURUSD 1.18166 tp: 1.18159 [#254 buy 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   deal #251 buy 1.00 EURUSD at 1.18159 done (based on order #254)
2017.08.16 20:26:06.477 2017.08.01 10:04:06   deal performed [#251 buy 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order performed buy 1.00 at 1.18159 [#254 buy 1.00 EURUSD at 1.18159]
2017.08.16 20:26:06.477 2017.08.01 10:04:06   order [#253 buy limit 1.00 EURUSD at 1.18159] triggered

И приходится ждать долгие секунды, пока они выведутся. А мне в логе интересны только распринтовка в журнал, что делаю сам в OnDeinit. Зачем навязывать каждый раз эти логи, которые читаются в ОЧЕНЬ редких случаях? Тем более есть же отдельный пункт Меню просмотра журналов Агентов. Да и отстутствие этих логов при той же Оптимизации никого не заставляют чувствовать себя неполноценно. Так зачем эта навязчивость в сотни мегабайт (особенно, если какой-нибудь дурной советник на каждом тике пытается открыть сделку, получая Unsuppoted filled mode)?!

Мухи от котлет возможно отделить в тестере? Чтобы, как в терминале: лог для принтов из самого эксперта и лог терминала. Надоело долгие секунды ждать, пока эти десятки тысяч ненужных сообщений в логах на каждый Order-пук пройдут и можно будет увидеть последние строчки завершения бэктеста.

Давно на самом деле наболело. Возможно, не одного меня раздражает.

Причина обращения: