Как уже было сказано, обычно концепты используют для входных параметров
Единственным, как мне кажется, решением тут может быть кучка static_assert'ов, на вызов функции при разных шаблонных параметрах
Спасибо! Мне уже выше написали, что нужно пересмотреть саму идею, что лучше ограничивать входные параметры, а не выход функции. Соглашусь с вами, хотя для целей само-документирования кода было бы здорово и ограничить выход. Хотел что-то такое замутить с автоматическим placeholder, но выражение типа "template<typename MapItem, typename MapFn> Activity<MapItem> auto map(MapFn&&)" проставляет совсем не тот MapItem. Он почему-то получается дважды вложенным в Activity, а так было бы красиво. Тут я совсем не понимаю, как работают placeholder и связка концепта с auto. Видео посмотрю