• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

steve-downey / sandbox-expected
97%

Build:
DEFAULT BRANCH: main
Repo Added 01 Jun 2026 02:10PM UTC
Token vNTjbSsBIpaCpAOQv1eNcQ3DYSZFCHwmW regen
Build 34 Last
Files 3
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • expected-over-references
  • expected-over-references-replay
  • main
  • merge-upstream

07 Jul 2026 12:30PM UTC coverage: 97.017% (+6.8%) from 90.196%
28965523762

push

github

web-flow
Expected over references (#61)

## Expected over References — Implementation of D4280R0

### Summary

Implements four partial specializations of `beman::expected` that allow
reference types as `T` and/or `E`, as proposed in [D4280R0 (Expected
over References)](https://wg21.link/D4280R0):

| Specialization | Storage | Step |
|---|---|---|
| `expected<T&, E>` | `T*` + `union { E }` + bool | 7 |
| `expected<T, E&>` | `union { T }` + `E*` + bool | 8 |
| `expected<T&, E&>` | `T*` + `E*` + bool | 9 |
| `expected<void, E&>` | `E*` + bool | 10 |

This is a reordered, cleaned-up replay of `expected-over-references`
(see that branch's own PR for the original messy history) — the final
code/tests/docs are the same feature, restructured so `unexpected<E&>`
is specialized first and the error-reference axis collapses into the
primary/void templates from the start, instead of building and later
discarding three separate reference-error specializations.

On top of that replay, this branch is merged with `main`'s new
std::expected parity test harness (parameterizes the behavioral test
suite to run against both `beman::expected` and `std::expected`),
resolving the merge conflict between the two and fixing two
toolchain-specific issues that surfaced running the merged suite in CI
(see `docs/std-parity.md`):

- A `[[nodiscard]]`-discard warning under `-Werror`.
- A libc++ cross-specialization friend-access bug in heterogeneous
`std::unexpected` comparison (guarded out for `std::expected`, not a
beman defect).

The std::expected parity target (`.std`) is also skipped entirely on
libc++ — libc++ has independent bugs of its own in this exact area (see
`docs/std-parity.md`) that aren't worth chasing; it continues to run
normally under gcc/libstdc++ and clang-with-libstdc++.

**CI:** full matrix green (gcc 13–16, clang 19–22, appleclang, libstdc++
and libc++, multiple sanitizer/Werror/coverage/modules configurations).

### Design decisions

All four specializations follow the... (continued)

683 of 704 relevant lines covered (97.02%)

25.96 hits per line

Relevant lines Covered
Build:
Build:
704 RELEVANT LINES 683 COVERED LINES
25.96 HITS PER LINE
Source Files on main
  • Tree
  • List 3
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
28965523762 main Expected over references (#61) ## Expected over References — Implementation of D4280R0 ### Summary Implements four partial specializations of `beman::expected` that allow reference types as `T` and/or `E`, as proposed in [D4280R0 (Expected over... push 08 Jul 2026 06:20PM UTC web-flow github
97.02
28761853430 expected-over-references-replay Merge 1348b9387 into f6783fd2d Pull #4 06 Jul 2026 01:24AM UTC web-flow github
97.02
28761243459 expected-over-references-replay Merge 3991cc302 into f6783fd2d Pull #4 06 Jul 2026 01:05AM UTC web-flow github
97.02
28755471090 expected-over-references-replay Merge 9e78ab9e6 into f6783fd2d Pull #4 05 Jul 2026 09:31PM UTC web-flow github
97.02
28727985002 main Merge std::expected parity test harness Parameterize the behavioral test suite over the expected implementation and run it against std::expected to lock in parity before the reference specializations. See docs/std-parity.md. push 05 Jul 2026 03:18AM UTC steve-downey github
90.2
28726959603 expected-over-references-replay Merge 9a789d545 into ed108195c Pull #4 05 Jul 2026 02:31AM UTC web-flow github
97.02
28726549609 expected-over-references-replay Merge 4471011b5 into ed108195c Pull #4 05 Jul 2026 02:11AM UTC web-flow github
97.02
28726017966 expected-over-references-replay Merge 31067a8ea into ed108195c Pull #4 05 Jul 2026 01:47AM UTC web-flow github
97.02
28725922869 expected-over-references-replay Merge 1f5df9b12 into ed108195c Pull #4 05 Jul 2026 01:42AM UTC web-flow github
97.02
28725785179 expected-over-references-replay Merge bafd1827b into ed108195c Pull #4 05 Jul 2026 01:36AM UTC web-flow github
97.02
See All Builds (34)

Badge your Repo: sandbox-expected

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc