Если вам нужно использовать OpaqueBytes в качестве ключа, вам нужно строгое сравнение. Это может быть функция-член или функция, не являющаяся членом.
Можно использовать что-то вроде этого:
// assumed a friend
bool operator<( OpaqueBytes const& lhs, OpaqueBytes const& rhs )
{
int res = memcmp( lhs._data, rhs._data, std::min(lhs_._size, rhs_._size) );
return ( res < 0 ) || ( res == 0 && lhs._size < rhs._size );
}
Вы могли бы сначала сравнить размер, конечно. Вы получили бы другой заказ, но он все еще был бы строгим.
(Я все же думаю, что карта лучше будет реализована с помощью функции сравнения, чем менее).