Сделать расширения обёртками над:
1. Ничем, или юнит-значением.
2. Другими расширениями.
Они все должны, понятное дело, наследоваться от одного типажа. А пользователю дать макрос, чтобы тот мог применить его на значении обёртки (от значения требуется только тип) и получил локальную имплементацию необходимых трейтов-расширений.