Сообщение Re: Чем современные шаблоны лучше макросов? :) от 09.01.2022 17:24
Изменено 09.01.2022 17:26 Pavel Dvorkin
Re: Чем современные шаблоны лучше макросов? :)
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Вот будь вместо шаблонов приличный макропроцессор, в котором можно и параметры вызова разобрать, и циклические конструкции использовать, и за счет объединения с компилятором использовать в условиях типы, классы и их свойства — какие у шаблонов остались бы преимущества?
В свое время одна моя студентка написала вот такой примерно код
Диагностика компилятора — illegal indirection. Правильная диагностика.
Я потратил не помню уж сколько времени, пытаясь понять, что все это значит, и откуда тут indirection, если никаких указателей и близко нет. Пока не догадался посмотреть результат препроцессинга. Посмотреть сам макрос мне в голову не пришло я и не подумал, что N — это макрос.
ЕМ>Вот будь вместо шаблонов приличный макропроцессор, в котором можно и параметры вызова разобрать, и циклические конструкции использовать, и за счет объединения с компилятором использовать в условиях типы, классы и их свойства — какие у шаблонов остались бы преимущества?
В свое время одна моя студентка написала вот такой примерно код
#define N 5;
// ...
for(int i = 0; i < N *2; i++) {
//
}
Диагностика компилятора — illegal indirection. Правильная диагностика.
Я потратил не помню уж сколько времени, пытаясь понять, что все это значит, и откуда тут indirection, если никаких указателей и близко нет. Пока не догадался посмотреть результат препроцессинга. Посмотреть сам макрос мне в голову не пришло я и не подумал, что N — это макрос.
Re: Чем современные шаблоны лучше макросов? :)
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Вот будь вместо шаблонов приличный макропроцессор, в котором можно и параметры вызова разобрать, и циклические конструкции использовать, и за счет объединения с компилятором использовать в условиях типы, классы и их свойства — какие у шаблонов остались бы преимущества?
В свое время одна моя студентка написала вот такой примерно код
Диагностика компилятора — illegal indirection. Правильная диагностика.
Я потратил не помню уж сколько времени, пытаясь понять, что все это значит, и откуда тут indirection, если никаких указателей и близко нет. Пока не догадался посмотреть результат препроцессинга. Посмотреть сам макрос мне в голову не пришло, я и не подумал, что N — это макрос.
ЕМ>Вот будь вместо шаблонов приличный макропроцессор, в котором можно и параметры вызова разобрать, и циклические конструкции использовать, и за счет объединения с компилятором использовать в условиях типы, классы и их свойства — какие у шаблонов остались бы преимущества?
В свое время одна моя студентка написала вот такой примерно код
#define N 5;
// ...
for(int i = 0; i < N *2; i++) {
//
}
Диагностика компилятора — illegal indirection. Правильная диагностика.
Я потратил не помню уж сколько времени, пытаясь понять, что все это значит, и откуда тут indirection, если никаких указателей и близко нет. Пока не догадался посмотреть результат препроцессинга. Посмотреть сам макрос мне в голову не пришло, я и не подумал, что N — это макрос.