general-purpose function objects for built-in operators, implement tag types in terms of them