Skip to content

Conversation

@FrancescoMerenda
Copy link
Contributor

This PR allows the usage of stateful visitors inside rfl::Variant.

Fixes #595

@gemini-code-assist
Copy link

Summary of Changes

Hello @FrancescoMerenda, 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 enhances the rfl::Variant class by introducing support for stateful visitors. The modification involves adjusting the parameter type for visitors within the internal visitation logic, enabling them to alter their state during execution. This resolves a limitation where visitors were previously treated as immutable, expanding the flexibility and utility of the Variant's visitation mechanism.

Highlights

  • Stateful Visitors: The rfl::Variant class now supports stateful visitors by modifying the internal do_visit helper functions to accept visitors by non-const reference (F&) instead of const reference (const F&).
  • Visitor Modification: This change allows visitors to modify their internal state during the visitation process, which was previously prevented by the const qualifier.
Changelog
  • include/rfl/Variant.hpp
    • Modified the visit_one lambda capture for the visitor parameter _f from const F& to F& in do_visit_no_result (both const and non-const overloads).
    • Modified the visit_one lambda capture for the visitor parameter _f from const F& to F& in do_visit_with_result (both const and non-const overloads).
    • Modified the visit_one lambda capture for the visitor parameter _f from const F& to F& in do_visit_with_reference (both const and non-const overloads).
Activity
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 correctly enables the use of stateful visitors with rfl::Variant by changing the visitor parameter in internal helper functions from a const reference to a non-const reference. The changes are consistent across all relevant do_visit_* methods and their const overloads.

The suggestions to refactor the visit_one lambdas to use captures instead of parameters are valid. This approach simplifies the lambda signatures and calls, improving code readability by avoiding parameter shadowing.

@liuzicheng1987 liuzicheng1987 merged commit cf3c93b into getml:main Feb 4, 2026
159 checks passed
@liuzicheng1987
Copy link
Contributor

@FrancescoMerenda thank you for the contribution!

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.

Inconsistency in rfl::Variant visit overloads prevents stateful visitors

2 participants