Adopting contemporary/C++26 std::optional project for P2988

(Moving from private email)
Bringing GitHub - steve-downey/beman-optional into the Beman project.

The project implements P2988 optional<T&> which targets C++26. Adding the support for P3168 would also be straight forward, since it has a contemporary optional (concepts and static_assert) implementation as well as the optional<T&> implementation.

I’ve done work to bring it inline with the proposed standards for Beman. There may be gaps or issues, of course, since it has a bit of history already.

2 Likes

I created GitHub - beman-project/Optional26 taking the liberty of calling this Beman.Optional26 (we can change the name later if there’s desire). @Sdowney @neatudarius.

1 Like

@dsankel , I like the name Beman.Optional26.

I’ll come soon with a PR for P3168R1.

@Sdowney , does the current main from GitHub - beman-project/Optional26 have just a skel with tests, but not actually implementation for the optional class? (missing “beman/optional/optional.hpp” only). Just wanted to be sure that I’m in sync with current status and what are the next steps or PRs.

L.E. I have 2 proposals:

  1. Configure the project to enforce PRs into main (require 1 approval, require PR, use squashed commits to get into main). I think it will help us to easier keep track of changes.
  2. Inspecting the current Beman standard, I think we should not include papers/ directory, just put a link to latest revision to published papers that implement in Optional26.

If you agree with them, I can configure the repo and create a PR with cleanup changes. CC: @Sdowney

Removing the paper source would cause me a major headache having to coordinate two repositories and keep them properly in sync.

I’m also deeply opposed to squash commits and the loss of information they cause in history. The way to keep the trunk history is merge commits from the branch.