Ну царь до сих пор не понимает того, что выбор между номинативными и структурными системами типов - это вопрос трейдоффов.
И на практике структурные системы типов о которых говорит царь - будут работать только при WPO и практически полном инлайне всего и вся, что достаточно экстремальная позиция для практически применимого ЯП, хоть я тоже сторонник похожих позиций, только по чуть другим причинам.
Можешь сделать структуру struct AddT<A, B>(PhantomData<(A, B)>) where A: Add<B; impl<A, B> Add<A, B> for AddT<A, B> where A: Add<B> { ... } И потом fn foo<A, B>() -> <AddT<A, B> as Add<A, B>>::Output where AddT: Add<A, B>
ну вот как-то
auto add(A a, B b) -> decltype (a + b) { return a + b; }