<local-visibility>hidden as a global project requirement leaks into the
install targets that boost-library generates and breaks alternative
selection when building the Boost superproject. The warning flags,
/bigobj, and hidden visibility only matter when compiling tests and
examples, so move them into test/Jamfile and examples/Jamfile.
Fixes#425
Assisted-by: ClaudeCode:claude-fable-5
FindPython3 was the only 3.12 dependency; on older CMake the two
Python consistency checks are skipped (they still run in CI).
Standalone builds on older CMake also skip the benchmarks, since
google/benchmark requires 3.13. Raising the policy max to 4.4 needs
CMP0169 set to OLD for BoostFetch.cmake's FetchContent_Populate.
Fixes#417
Assisted-by: ClaudeCode:claude-fable-5
Comparing two const accessors, or an accessor with a storage cell
reference, did not compile with the default storage: the accessor's
catch-all comparison templates and the mirrored friend operators of
unlimited_storage::reference were equally good matches.
Make the accessor-vs-accessor operators const so that standard
algorithms (which compare through const references) use them, and
constrain the generic operators in detail/operators.hpp to yield when
the other operand's class handles the comparison with a member, as
operator== already did.
Fixes#403
Assisted-by: ClaudeCode:claude-fable-5
Under C++23 P2255R2 (Type Traits To Detect References Binding To
Temporaries), std::tuple's converting constructor is deleted when a
reference element would bind to a temporary. This broke code that
converts tuple<int> to tuple<const double&>, since the int is
first converted to a temporary double.
Fix: strip cv-qualifiers and reference from the deduced sample
argument types in accumulator_traits. This makes
accumulator_traits<mean<double>>::args == tuple<double> instead of
tuple<const double&>, so the compile-time convertibility check
is_convertible<tuple<int>, tuple<double>> succeeds.
Runtime behavior is unchanged; accumulators still receive arguments
through their const double& parameter.
Assisted-by: OpenCode:Kimi-K2.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
* feat: support passing a coverage parameter to project
This would be useful for boost-histogram, as we could support `flow=False` there directly with this. This uses the existing coverage tag, allowing it to be passed in.
Assisted-by: Copilot:Kimi-K2.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
* fix: reduce diff with develop a bit
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
---------
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
* Make the library modular usable
* Move inter-lib dependencies to a project variable and into the build targets
* Bump B2 require to 5.2
* Update dependencies used in CI: compiler versions, tools, etc.
---------
Co-authored-by: Hans Dembinski <hans.dembinski@gmail.com>
Compiling tests under Visual Studio 2019 14.29.30133 (19.29.30145.0) fails with a not very helpful error:
```
libs\histogram\test\algorithm_project_test.cpp(186,1): fatal error C1903: unable to recover from previous error(s); stopping compilation
```
This can be fixed by moving the dynamic-only tests into a separate function, so that they are only compiled and run once.
---------
Co-authored-by: Hans Dembinski <hans.dembinski@gmail.com>
* Added fraction accumulator
* Added binomial proportion interval computers: Wald, Wilson Score, Clopper Pearson, Jeffreys
* Width of intervals for all classes can be set via deviation or confidence_level
* Support valarray in histogram::fill
* Add fraction and count to user guide
Co-authored-by: Hans Dembinski <hans.dembinski@gmail.com>
Co-authored-by: Hans Dembinski <HDembinski@users.noreply.github.com>
* Fixed: Passing nan to the ctor of axis::variable failed to throw std::invalid_argument
* Fixed: axis::variable{{0, 1, inf}}.value(1) was nan, because interpolation would compute 0 * inf