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

 
И все-таки я обманул систему

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.10.09 00:38

Ошибка при компиляции:
void OnStart()
{
    Print(typename("ushort"));      //(1) нормально
    Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
}

Двойной typename

template<typename T>
T f( T ) { return typename(T); }
void OnStart()
{
        Print(f(typename('+')));
}

Результат: string

Т.е. уже прямое доказательство, не косвенное
 
A100:

Тем более, значит в Документации все правильно было написано

Да в документации к шаблонам, всё правильно описано.
typename ведь под шаблоны заточен, по этому возвращает тип string
Просто изначально вы не поняли, что я писал, что возвращается ИМЯ типа, а не ТИП имени ))
А вы начали мне за возвращаемый string объяснять этого ИМЕНИ )) 
Сбили меня с толку и я засомневался, и подумал что ushort может вернуть.
Но нет, string всё таки.

 
Roman:

Ну конечно я виноват, я же документацию не читаю и я же придумал такую запись

(typename)J

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Roman, 2020.10.07 17:20

Да, так тоже ошибка компиляции

#define J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define J '+'          // char

void OnStart()
{
    Print((typename)(J));
}

 
A100:

Ну конечно я виноват, я же документацию не читаю и я же придумал такую запись


Да, я прекрасно помню, по этому и возник вопрос.
Вот как раз документация не описывает использование typename() в таком синтаксисе, как описывается это для sizeof()
В документации к шаблонам приведён лишь пример использования в таком синтаксисе.
По этому предположил, что разрешено будет и так  (typename)
Но нет, ошибся. Спасибо за столь деликатную беседу. Друг друга поняли, во всём разобрались.

 
A100:
И все-таки я обманул систему

Двойной typename

Результат: string

Т.е. уже прямое доказательство, не косвенное

сомневаюсь что typename в шаблонах имеет отношение к typename  который тип возвращает.

с учетом того, что в шаблонах mql нет значений в качестве параметров, только типы, ключевое слово в typename в шаблонах вообще лишнее.

А второй typename что-то типа макроса, поэтому с двойным typename проблемы.

 
TheXpert:

Зеленое лишнее, но желтых все равно два и они одного контекста

template<typename T>
T f( T ) { return typename(T); }
void OnStart()
{
        Print(f(typename('+'))); //(1) нормально
}

поэтому (1) равносильно (2)

        Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
 
A100:

Зеленое лишнее, но желтых все равно два

согласен, тупанул
 

Доброго дня! 




нормально ли это? )

а хотелось просто прогнать советника по одному из сегодняшних отрезков на 5ках 

 
Nikolai Karetnikov:

Доброго дня! 




нормально ли это? )

а хотелось просто прогнать советника по одному из сегодняшних отрезков на 5ках 

Все правильно. Ошибки нет. Просто нужно почитать справку.
 

При вводе значения входного параметра советника в Терминале/Тестере действия клавиши ESC приравниваются к ENTER. Это правильное поведение?


Сейчас, если случайно при вводе затер значение, то отменить ввод не получается и предыдущее значение можно потерять.