Hello. I get "error C2664: 'bool NameCompare::operator ()(Product &,Product &)' : cannot convert argument 1 from 'const std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to 'Product &'" when trying to compile this.
A multimap's compare operator compares keys, not values. Your multimap uses strings as keys and Product objects as values, while your compare operator expects Product objects as keys.