Skip to content

investigate removing boost #52

@tomjnixon

Description

@tomjnixon

Here's what we use, and what i would propose to do with them:

  • math
    • factorial
      • could use std::tgamma, but it would be nice to know that it's exact for small values
      • implement ourselves as in boost -- have a table for small values (i.e. where there is no floating point round-off, up to 22), then fall back to std::tgamma (which is really unnecessary)
    • legendre
      • in c++17, could implement ourselves (or as a table)
    • constants (just pi)
      • std::numbers in c++20, implement ourselves
  • algorithm/clamp - in c++17, implement ourselves
  • make_unique - update to c++14
  • optional - in c++17
  • variant - in c++17

Optional and variant are the tricky ones. Some options for those:

  • add a wrapper that makes it work with either boost or c++17
    • the behavior is a bit different so this may be tricky. This would be a pain to test, and we'd want to remove it eventually, which would be annoying again. It would also probably make the public interface unclear.
  • update to c++17
  • include our own implementations
    • similar issues to the first option. IME this is a pain, as implementations of these are quite subtle, and nobody is interested in maintaining them now that they have been standardised

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions