
On 06/15/18 13:22, Viktor Sehr via Boost wrote:
It seems to me that neither boost::flat_map nor boost:flat_set with a custom comparator such as std::less<> behaves like std::set/std::map. This results in unnecessary allocation, in difference from std::map/set when used with a std::string as key for example
Example: // Please note that I pretend that "dummy" is large enough to make the std::string utilize the heap. auto set = std::set<std::string, std::less<> >{}; auto n = set.count("dummy"); // No conversion from const char* to std::string
auto flatset = boost::container::flat_set<std::string, std::less<> >{}; auto n = flatset.count("dummy"); // const char* is converted to a std::string before comparison, thus resulting in an unnecessary allocation.
Is this a known issue intended to be resolved?
Support for templated lookup methods have been added not long ago. https://github.com/boostorg/container/issues/69