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

stillwater-sc / universal / 25641836814 / 1
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 10 May 2026 11:11PM UTC
Files 648
Run time 13s
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

10 May 2026 10:44PM UTC coverage: 83.933% (-0.02%) from 83.949%
25641836814.1

push

github

web-flow
feat(edecimal): partial constexpr support (API surface) (#824)

Promote the edecimal type's user-facing surface to constexpr where
C++20's transient-allocation rule permits.  edecimal inherits from
std::vector<uint8_t>, so any non-empty digit storage disqualifies the
object from being a constexpr variable.  Mirrors the partial-constexpr
playbook from PR #820 (unum) and PR #821 (valid).

Promoted (this PR)

  * default constructor: constexpr / noexcept; uses
    std::is_constant_evaluated() to keep parallel invariants -- empty
    vector at constant evaluation (canonical constexpr zero, recognized
    by iszero() via the size() == 0 branch); push_back(0) at runtime to
    preserve the historical "size() == 1, [0] == 0" representation that
    comparison and arithmetic operators rely on
  * defaulted copy / move ctor + assignment operators marked constexpr
    (std::vector copy/move is constexpr in C++20 on empty source)
  * iszero() constexpr (range-for over the digit vector; trivially true
    on the empty constant-evaluated state)
  * sign-only selectors: sign(), isneg(), ispos() constexpr (read only
    the bool member)
  * sign-only modifiers: setsign(), setneg(), setpos() constexpr (write
    only the bool member)

Constexpr-callable surface today (gcc + clang, C++20)

  * Default ctor and selectors at constant evaluation
  * Sign modifier round-trips at constant evaluation
  * Copy and copy-assignment at constant evaluation (when source is the
    empty default-constructed state)

Limited at constant evaluation today (heap-escape boundary)

  * setzero / setdigit / setbits          (call push_back)
  * native-type ctors and operator=       (convert_integer / convert_ieee754)
  * compound arithmetic (+= -= *= /= %=)  (mutate the digit vector)
  * unary -, ++, --                       (allocate temporary edecimals)
  * conversion-out (operator double etc.) (iterate the digit vector)
  * comparison operators (==, <, ...)     (read the digit vector)
... (continued)

45870 of 54651 relevant lines covered (83.93%)

6482138.24 hits per line

Source Files on job 25641836814.1
  • Tree
  • List 648
  • Changed 3
  • Source Changed 1
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25641836814
  • 78e97377 on github
  • Prev Job for on main (#25409308132.1)
  • Next Job for on main (#25645160577.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc