https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91405
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Or simpler: template<typename T> concept DatabaseTransaction = requires(T a) { a.commit(); }; template<typename T> concept UserRepository = requires(T a, DatabaseTransaction auto transaction) { a.insert_user_if_not_exists(transaction); };