Это однозначно добавит универсальности. Не могу точно сказать, оверкилл ли. Если не нужно иметь много способов перегрузки или передавать GetAwaiter как функтор - оверкилл.
Можно действительно попробовать начать с требования к пользователю "Специализируй класс, чтобы добавить пользовательскую перегрузку функции
Fn
". Если это удобно, то флаг в руки.
Но вообще, это очень обширная тема с множеством разных решений под разные задачи.
@oficsu, может, добавишь?
@TmLev, я бы добавил, что сильно зависит от объема кодовой базы
Если на всю кодовую базу полторы функции требуют расширения от пользователя, да и пользователей всего несколько – CPO может оказаться и оверкиллом в условиях, когда нет готового инструментария для упрощения их написания. Для начала я бы взял
tag_invoke
– уже готовое решение, а потому позволит влиться в тему и понять, нужно ли что-то сложнее.
Пока ещё чего-то заметно мощнее
tag_invoke
не появилось или я не знаю об этом
Но если и функций, и пользователей много – можно и повелосипедить, особенно, если интересно