Skip to content

Conversation

@liuzicheng1987
Copy link
Contributor

No description provided.

@liuzicheng1987 liuzicheng1987 changed the title Allows custom Compare and Allocator on map-like data structures; resolves #561 Allow Compare and Allocator on map-like data structures; resolves #561 Jan 28, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @liuzicheng1987, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly improves the flexibility of the rfl library by enabling it to correctly parse and serialize standard library map-like and set-like containers that employ custom comparison functions or memory allocators. This addresses a previous limitation, allowing developers to use these containers with their specific configurations without encountering parsing issues, thereby enhancing the library's compatibility and robustness.

Highlights

  • Enhanced Map-like Container Support: The Parser templates for std::map, std::multimap, std::set, and std::multiset have been extended to correctly handle custom Compare and Allocator template parameters. This allows the library to serialize and deserialize these containers even when non-default comparators or allocators are used.
  • Updated Type Traits: The is_map_like and is_map_like_not_multimap type traits were modified to accurately recognize std::map and std::multimap types that include custom Compare and Allocator parameters, ensuring correct type deduction within the parsing framework.
  • New Test Case: A new test file, test_map_with_custom_less.cpp, was added to validate the serialization and deserialization of a std::map using a custom std::less<> comparator, confirming the functionality introduced by these changes.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request successfully extends the Parser and is_map_like specializations to correctly handle std::map, std::multimap, std::set, and std::multiset when custom Compare and Allocator template parameters are used. This resolves the issue of not being able to parse map-like data structures with non-default comparators or allocators. The addition of test_map_with_custom_less.cpp provides a good test case for the new functionality.

@liuzicheng1987 liuzicheng1987 merged commit 3e55b8d into main Jan 28, 2026
318 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants