Шаблоны Scala Macros и C ++ предоставляют доступ к метапрограммированию времени компиляции. Не могли бы вы уточнить сходства и различия? Они равны с точки зрения выразительности?
Одним из важных отличий между ними является то, что макросы Scala написаны на Scala, тогда как шаблоны C ++ — это их собственный язык программирования, который совершенно не похож на C ++. C ++ является императивным объектно-ориентированным строгим нечистым языком, шаблоны C ++ являются декларативным гибридным логическим / функциональным нестрогим чистым языком, который никогда не предназначался для использования в качестве полноценного языка программирования, и, таким образом, ему не хватает многих функций, необходимых для программирование в целом.
Они оба обеспечивают метапрограммирование времени компиляции, и оба завершаются, но это все, что у них общего. Я не эксперт по C ++, но, насколько мне известно, тот факт, что шаблоны C ++ полностью готовы, редко используется, и использовать их для реального программирования сложно. Зачастую шаблоны просто используются для обеспечения параметрического полиморфизма (он же generics), тогда как макросы Scala написаны на Scala и могут использовать всю мощь языка во время компиляции.