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

 
Roman:

Причём тут шаблоны?
Если синтаксис использования не для шаблона, в даном случае.

При том что Разработчики поместили описание typename с примером в этот раздел. До конца прочтите и найдете этот абзац и этот пример

 
A100:

А какая разница между (1) и (2) ? Уважаемые разработчики - может быть  Roman прав и теперь typename возвращает тип?

думаю это ближе к макросу

 
A100:

При том что Разработчики поместили описание typename с примером в этот раздел. До конца прочтите и найдете этот абзац и этот пример

Понимаете, что тот раздел документации посвящён шаблонам.
Шаблоны не имеют отношения к данным примерам.
typename это равносильно что получить sizeof

#define  A '+'

void OnStart()
{
   Print(sizeof(A));
   Print(typename(A));
   Print(sizeof("string"));
   Print(typename("string"));
}
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  2
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  ushort
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  12
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  string
 
Roman:

Понимаете, что тот раздел документации посвящён шаблонам.
Шаблоны не имеют отношения к данным примерам.
typename это равносильно что получить sizeof

В документации сказано: Для создания универсальных способов работы с различными типами данных необходимо использовать ключевое слово typename для получения типа аргумента в виде строки.

Где в этом предложении есть слово шаблон? Не вижу? Да... пример с шаблоном. А что Разработчики там Вам должны были примеры на все случаи жизни привести что-ли?

 
A100:

В документации сказано: Для создания универсальных способов работы с различными типами данных необходимо использовать ключевое слово typename для получения типа аргумента в виде строки.

Где в этом предложении есть слово шаблон? Не вижу? Да... пример с шаблоном. А что Разработчики там Вам должны были примеры на все случаи жизни привести что-ли?

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

 
Roman:

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

А результат этого принта Вы видите?

void OnStart()
{
    Print("ushort");
}

Результат: ushort

Так что теперь: "ushort" это тип такой? И такая запись по Вашему нормальна?

void OnStart()
{
    "ushort" ch = '+';
}
Нет это не тип, это строка. Print типы не печатает - в PrintFormat нет такого формата. Строки, числа, символы - печатает, а типы - нет
 
A100:

А результат этого принта Вы видите?

Результат: ushort

Так что теперь: "ushort" это тип такой? И такая запись по Вашему нормальна?

))) вы меня удивляете

Вы в принт передали строковый литерал, его и получили.
Чтобы получить имя типа, используется ключевое слово typename("ushort")
получите имя типа string

Предадите сам тип  typename(string), получите тоже самое.

Вообще это косяк документации, что не описывает работу с ключевым словом typename.
Для sizeof есть описание, а для typename только для шаблонов.
Хотя выше я привёл пример, что typename получает имя типа, равносильно как sizeof получает размер. 

 
Roman:

))) вы меня удивляете

Вы в принт передали строковый литерал, его и получили.

Так и Вы передали в принт строковый литерал

void OnStart()
{
    Print(typename('+'));
}

Результат: ushort

Если Вы думаете по другому после всех объяснений и изучения документации, то это Ваши проблемы:

void OnStart()
{
    Print(short); //Error - потому что принт типы не печатает
}
 
A100:

Так и Вы передали в принт строковый литерал

Результат: ushort

Если Вы думаете по другому после всех объяснений и прочтения документации, то это Ваши проблемы

А я разве утверждал, что возвращается строка ? 
Это вы зацепились за string и Print()
А на выходе будет не строковый литерал, а символьный целочисленный тип ushort.
В общем тоже, не мои проблемы в вашем познании.

 
Roman:

А на выходе будет не строковый литерал, а символьный целочисленный тип ushort.

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

int f()
{
    return typename('+'); //warning: implicit conversion from 'string' to 'number'
}
А теперь попробуйте доказать обратное - тоже без принта! Естественно доказать примером, а не фантазиями на тему: "в документации написано не то - я лучше знаю"
Причина обращения: