Ну вот смотри, тот самый пример с плюсовыми концептами и requires(T a, T b) { { a + b } -> T, //можно складывать //a + b == b + a //такого нет, но хочу }
Я вижу одну самую существенную проблему в макросах (по крайней мере в Си и Rust): они не описывают своим интерфейсом пред и постусловия, из-за чего либо непонятно как их использовать бывает, либо вообще ошибки описываются как последствия, а не как причины
Вот, не понимаю, почему в Rust решили прогуляться по тем же граблям, но чуть более элегантно...