Skip to content

Conversation

@liuzicheng1987
Copy link
Contributor

No description provided.

@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 addresses and resolves compilation issues that arise when building the project with GCC 13, specifically concerning the usage of std::expected. The changes primarily focus on refining the rfl::Error class's special member functions, adjusting the std::bad_expected_access specialization, and making minor corrections to how std::expected's transform and error() methods are invoked within the parsing utilities. These modifications ensure that the Result and parsing components are fully compatible and behave correctly under the newer GCC 13 compiler environment.

Highlights

  • rfl::Error Class Enhancements: Added default constructor and destructor, and applied noexcept specifiers to the move constructor and move assignment operator of the rfl::Error class for improved C++ standard compliance.
  • std::bad_expected_access Specialization Update: Modified the error() method within the std::bad_expected_access<rfl::Error> specialization to remove the C++23 'deducing this' syntax, resolving potential compilation issues with GCC 13.
  • std::unique_ptr Parsing Lambda Adjustment: Changed the lambda parameter from an rvalue reference (T&&) to a by-value parameter (T) in Parser_unique_ptr.hpp when using std::expected::transform to create std::unique_ptr instances, ensuring correct object handling.
  • std::variant Error Handling Refinement: Removed a redundant std::move call when retrieving errors from std::expected in Parser_variant.hpp, aligning with the expected return type of std::expected::error().
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/linux.yaml
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 updates the code to improve compatibility with GCC 13 and std::expected. The changes to the rfl::Error class are solid improvements, making it a more well-behaved type. However, I have a couple of suggestions regarding other changes. The modification to std::bad_expected_access<rfl::Error>::error() introduces potential performance and correctness issues, and I've proposed an alternative that is more robust. Additionally, a change in Parser_variant.hpp seems to degrade performance by replacing a move with a copy, which I've recommended reverting if it wasn't for a specific compiler workaround.

@liuzicheng1987 liuzicheng1987 changed the title Make sure that GCC 13 also compilies with std::expected Make sure that GCC 13 also compilies with std::expected; resolves #570 Jan 11, 2026
@liuzicheng1987 liuzicheng1987 merged commit c3f2628 into main Jan 11, 2026
315 of 318 checks passed
@liuzicheng1987 liuzicheng1987 deleted the f/std_expected_gcc_13 branch January 11, 2026 14:31
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