Commit Graph
1545 Commits
Author SHA1 Message Date
Chip Hogg fb602a4497 Try fixing "unreachable code" warning on MSVC 14.2
This doesn't show up on any other compiler, including MSVC 14.3, so I
think it's just a compiler bug.  Cursory googling suggests perhaps that
some older versions of MSVC have immature support for `if constexpr`.
2022-01-12 09:47:40 -05:00
Chip Hogg d554fb28cc Try fixing MSVC internal compiler error
I'm breaking apart the requirements into simpler pieces, but I don't
really know if that will help.
2022-01-11 20:33:48 -05:00
Chip Hogg a306472a6b Reuse callables in pairwise_all tests 2022-01-11 19:44:10 -05:00
Chip Hogg bdf488db04 Remove unnecessary forward declaration 2022-01-11 19:34:57 -05:00
Chip Hogg 08818ac6a8 Make pow()'s argument a simple (non-template) parameter 2022-01-11 19:19:25 -05:00
Chip Hogg a8d6c890a5 Move pi_to_the to the test file 2022-01-11 19:12:27 -05:00
Chip Hogg 3042135eb9 Try fixing clang build failures 2022-01-11 12:56:14 -05:00
Chip Hogg cee4be2b67 Simplify namespaces and canonicalize formatting
The motivation for the `mag` sub-namespace was to distinguish something
like `mag::product_t<...>` from `dim::product_t<...>`, based on the
idioms of Aurora Units.  However, we have no need for a `product_t` type
trait, since we can just use `operator*()`, so we can eliminate this
sub-namespace.
2022-01-10 14:28:02 -05:00
Chip Hogg 4f90302dd7 Constrain strictly_increasing to signed values 2022-01-10 14:27:04 -05:00
Chip Hogg c64f392dc3 Remove some extra spaces 2022-01-10 14:23:44 -05:00
Chip Hogg f783d7f274 Handle exp explicitly in as_magnitude()
The new test actually passed without modifying the code.  However, that
might be implementation-dependent (presumably based on canonicalization
of the `ratio` template parameter), so I wanted a more obviously correct
implementation.
2022-01-08 19:34:42 -05:00
Chip Hogg 409aaf4636 Generalize inverse() to pow<...>() 2022-01-08 19:34:21 -05:00
Chip Hogg 053de8d539 Replace structs with variables 2022-01-08 18:34:14 -05:00
Chip Hogg ba458d479e Fix remaining constraints 2022-01-08 18:19:40 -05:00
Chip Hogg 325cbc8fa9 Finish adding tests 2022-01-08 18:14:22 -05:00
Chip Hogg 41995464f0 Fix magnitude constraints
I got my requires expressions/clauses mixed up.

Unfortunately, this means we can't just shove all the "implementation
details" down to the bottom of the file.  Oh well.
2022-01-08 18:13:48 -05:00
Chip Hogg f12fde6204 Add some tests 2022-01-08 17:57:10 -05:00
Chip Hogg 0a470f2617 Replace make_ratio with as_magnitude<ratio>
It's cleaner to just have the one way.
2022-01-08 17:29:40 -05:00
Chip Hogg ef6f937460 Clean up and reorder file 2022-01-08 17:18:33 -05:00
Chip Hogg 838b132a61 Finish migrating base_power to NTTP 2022-01-08 15:08:05 -05:00
Chip Hogg 9d48e6983a Refactor BasePower struct and concept
Instead of templating on `long double`, we template on "anything whose
value member is `long double`".  This is how we work around gcc-10's
lack of support for floating point NTTPs.

To access the base value, we provide `.get_base()` member functions.

The clearest and most direct way I know to express "is this a base
power" is via a type trait, which is true only for `base_power<T>`.
2022-01-08 14:40:28 -05:00
Chip Hogg 3063aebe5a Clean up pairwise_all() and strictly_increasing() 2022-01-08 14:28:53 -05:00
Chip Hogg 92b7a15d6f (partial) Switch base_power to NTTP
Apparently, gcc-10 does not support floating point NTTPs, so we'll need
to reimagine the approach.
2022-01-08 14:04:19 -05:00
Chip Hogg 6033f96267 Enable implicit ratio construction 2022-01-08 14:03:52 -05:00
Chip Hogg 14d8d96b3c Replace static_assert with template parameter constraints 2022-01-04 20:06:41 -05:00
Chip Hogg 63910131ff Try fixing MSVC 14 bug
I don't know how to test this locally.
2022-01-04 14:14:22 -05:00
Chip Hogg 4246f2db2a Remove unused variable names
Should fix clang builds
2022-01-04 14:01:42 -05:00
Chip Hogg bb4fe5040d Factor out logic into pairwise_all() helper
We could move this somewhere more generic if we want.
2022-01-03 15:20:05 -05:00
Chip Hogg cef01ba67c Remove redundant inline specifiers
`static constexpr` implies `inline`; see:
https://stackoverflow.com/a/57407675
2021-12-31 09:54:10 -05:00
Chip Hogg 998266e780 Try fixing MSVC 14.2
I don't know how to run the build directly, but it seems like this
should work.
2021-12-31 09:35:30 -05:00
Chip Hogg 626c7bfe39 Fix up for review
- 120 line limit
- uppercase template params
- doxygen comments for public APIs
- `int_base` -> `prime_base`
2021-12-30 10:47:01 -05:00
Chip Hogg 05934c8b72 Add make_base_power() helper 2021-12-29 21:37:06 -05:00
Chip Hogg c75eb02ea7 Finish fleshing out make_ratio 2021-12-29 21:21:58 -05:00
Chip Hogg 8a1ed3adcb Add make_ratio() helper and prime factorization 2021-12-29 21:21:58 -05:00
Chip Hogg a86cac8705 Capitalize more template arguments 2021-12-29 21:21:58 -05:00
Chip Hogg 2c229710e7 Create and use BasePower concept 2021-12-29 21:21:57 -05:00
Chip Hogg 4f759f95e8 Use Magnitude concept where appropriate 2021-12-29 21:21:57 -05:00
Chip Hogg 0566158e91 Add concept for magnitude 2021-12-29 21:21:57 -05:00
Chip Hogg 0c5ae082d5 Add magnitude with product, inverse, quotient
For now, all templates are unconstrained; we hope to clean that up
later.
2021-12-29 21:21:57 -05:00
Chip Hogg a80378cae8 Support addition and negation in ratio 2021-12-29 21:21:57 -05:00
Johel Ernesto Guerrero Peña 3bf3bebb6a build: export config to local build (#322) 2021-12-13 15:16:08 +01:00
Mateusz Pusz a6a2549fe7 build: MSVC versioning updated according to the latest Conan support 2021-12-13 12:29:01 +01:00
Mateusz Pusz 0a5e791550 docs: range-v3 dependency note fixed on the usage page
Resolves #319
2021-12-13 10:20:12 +01:00
Johel Ernesto Guerrero Peña 4efed3c6d4 refactor: update Clang 14 to not require range-v3 (#321)
* Revert "refactor: update hacks for LLVM 14"

This reverts commit d142844de7.

* refactor: update Clang 14 to not require range-v3
2021-12-13 10:01:16 +01:00
Mateusz Pusz eb94f1cc0e ci: Conan MSVC 14.2 support fixed 2021-12-13 09:28:33 +01:00
Mateusz Pusz 511280d250 ci: MSVC support updated to conform to new Conan versioning for this compiler 2021-12-12 18:38:49 +01:00
Mateusz Pusz ab351433ee docs: typo fixed
Relates to #316
2021-11-26 10:30:20 +01:00
Mateusz Pusz 571df5ed33 feat: conversion from quantity_point to std::chrono::time_point added
Refers #316
2021-11-23 14:37:08 +01:00
Mateusz Pusz af928dd0c7 feat: conversion helpers from mp-units to std::chrono types added
Resolves #316
2021-11-23 11:17:47 +01:00
Mateusz Pusz 163a2502ad fix: account for an empty string in VS2022 2021-11-16 10:51:04 +01:00