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

 
A100:

На выходе будет именно строковый литерал. Вот доказательство тут принта вообще нет:

Я не верю компиляторному предупреждению!

'+'  это не string ! Это символьный тип, в mql ushort 2 байта

Точка.

Скорее это ошибка в описании предупреждения.

 
Roman:

Я не верю компиляторному предупреждению!
' '  это не string ! это символьный тип!

Скорее это ошибка в описании предупреждения.

Это не вопрос веры и предположений - нужны доказательства: пример без принта доказывающий, что typename возвращает не строковый литерал есть ? Когда будет - продолжим

 
A100:

Это не вопрос веры и предположений - нужны доказательства: пример без принта доказывающий, что возвращается не строковый литерал есть ? Когда будет - продолжим

Хотя typename возвращает же имя, по этому и возвращает как string
возможно и так, но это то какая разница? 
Получили имя типа и получили. не пойму, что вы хотите мне доказать?
Что typename возвращает тип string, ну логично, он же имя возвращает.
Я имел ввиду что возвращается имя типа, то есть буковками написан тип ))
Я вообще не думал, в каком именно типе он возвращается, а вы зацепились за это.
В общем холивар не о чём.
 
Roman:
Хотя typename возвращает же имя, по этому и возвращает как string
возможно и так, но это то какая разница? 

Похоже, что стадия отрицания у Вас прошла... начинается стадия осознания. Не буду Вам мешать

 
A100:

Похоже, что стадия отрицания у Вас прошла... начинается стадия осознания. Не буду Вам мешать

Ещё раз повторю, я не утверждал, что возвращается сам тип, я утверждал что возвращается ИМЯ типа.
Какого типа возвращается ИМЯ, я вообще не думал об этом в нашей беседе.
По этому стадия осознания тут не причём, и так понятно что имя это строка, если она string.
Но есть же ещё mql ushort, будь он не ладен, по этому тут я засомневался, что в typename будут запихивать 12 байтный string.
Если бы возвращался сам тип, то это вообще улёт был бы ))
На лету можно было бы определять переменные ))
Не знаю возможно ли такое в скомпилированной программе, по сути обычное выделение памяти.

 
A100:

Это в абстрактных языках, а у MQL с абстрактностью не сложилось - якобы это нельзя совместить со скоростью

Вот ещё вариант проверить, 12 байт как положено типу string

Print(sizeof(typename()));
 
Roman:

Вот ещё вариант проверить, 12 байт как положено типу string

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

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

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

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

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));
}

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