-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Labels
enhancementNew feature or requestNew feature or request
Description
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)
- could use
- legendre
- in c++17, could implement ourselves (or as a table)
- constants (just pi)
- std::numbers in c++20, implement ourselves
- factorial
- 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
- it's 2023, and the features we need have been implemented for a long time in most compilers https://en.cppreference.com/w/cpp/compiler_support/17
- quite a bit of code would be simpler, as the API for std::optional/variant is better than boost
- 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
Labels
enhancementNew feature or requestNew feature or request