Re[2]: Ключевое отличие шаблона от макроса
От: fk0 Россия https://fk0.name
Дата: 09.07.23 10:32
Оценка:
Здравствуйте, rg45, Вы писали:

R>
  • Для макросов не предусмотрено ничего похожего на отложенное (неявное) инстанцирование, которое очень востребовано при использовании шаблонов.

    В смысле? Макросы как раз и дают результат в месте вызова, отлженно.

    R>
  • Для макросов недоступно огромное количество инструментов и паттернов, доступных для шаблонов — концепты, SFINAE, CRTP, variadic packs, template class argument deduction и пр.

    Смешаны совершенно разные концепции. SFINAЕ -- краеугольный камень, на котором всё стоит. Остальное всё
    постольку-поскольку. Переменное число аргументов есть и у макросов.

    R>
  • Макросы небезопасны в плане скрытых побочных эффектов (классический пример — max(++a, ++b))

    std::max неожиданно тоже опасен! В него можно подсунуть временнй объект.

    R>
  • Макросы существенно проблематичнее в отладке и поиске ошибок, чем шаблоны.

    Притянуто за уши. То и другое по шагам не шагается в отладчике, то и другое компиляторы умеют разворачивать
    по шагам когда показывают ошибку.
  •  
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.