https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109229
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Tobias Ribizel from comment #2) > Something similar like common_type<T, > invoke_result<binary_op, InputIt::value_type, T>> would be much safer. No, there's no requirement that those types have a common type. You can have two types which are valid inputs to the binary operator, but which cannot be converted to each other.