Roth Michaels
43729c6190
Enable use of std::format for AppleClang / Xcode 16
...
Specified the minimum apple-clang version to support `std::format` to 16
for _connanfile.py_. Xcode 16 does include the `<format>` header but
does not seem to have the __cpp_lib_format compatibility macro defined
so a similar override was needed as we had for Clang 17.
To be able to use `std::format` with Xcode 16 I had to pass
`-DMP_UNITS_API_STD_FORMAT=AUTO` when calling `cmake`. Is this expected
or is this a sign I missed something in my changes to _CMakeLists.txt_?
2024-12-19 12:54:55 -05:00
Roth Michaels and Mateusz Pusz
90aa52a6cc
Update src/core/include/mp-units/framework/representation_concepts.h
...
Co-authored-by: Mateusz Pusz <mateusz.pusz@gmail.com >
2024-12-19 11:21:17 -05:00
Roth Michaels
ada508a683
Do not use WeaklyRegular with Xcode 15 for type detection
...
Removing the `WeaklyRegular` requirement from the `Scalar`, `Complex`,
and `Vector` concepts seems to address compiler crashes or long
compilation times with apple-clang included in Xcode 15.
I thought I had previously tried removing the `WeaklyRegular`
requirement and it had not solved the problem but either I made a
mistake with this test or some other changes after rebasing this work
changed the situation.
2024-12-19 11:19:09 -05:00
Roth Michaels and Mateusz Pusz
0c3bb98c6d
Update src/core/include/mp-units/framework/representation_concepts.h
...
Co-authored-by: Mateusz Pusz <mateusz.pusz@gmail.com >
2024-12-09 18:11:03 +01:00
Roth Michaels and Mateusz Pusz
ec3f000050
Update src/core/include/mp-units/framework/representation_concepts.h
...
Co-authored-by: Mateusz Pusz <mateusz.pusz@gmail.com >
2024-12-09 18:10:56 +01:00
Roth Michaels
d30f5a668c
clang-format fixes
2024-12-09 18:01:27 +01:00
Roth Michaels
c3e45088a6
Fixes for apple-clang crashes and performance issues
...
The source of the crash with the latest changes seemed to be from the
`IsOfCharacter` concept. This concept was refactored to use some type
traits and more simple concepts although with less strict requirements.
A new macro, `MP_UNITS_APPLE_CLANG_HACKS` was added to
mp-units/bits/hacks.h to enable work arounds for pre-Xcode 16.1 apple-clang.
Some tests were not passing and were removed with the preprocessor macro
for apple-clang hacks is defined.
Adding `ComplexFunctionsAvailable` and `VectorFunctionsAvailable` fixed
some test failures in concepts_test.cpp but not all.
2024-12-09 17:39:21 +01:00
Mateusz Pusz
7eab29c40a
fix: gcc-12 compilation workaround
2024-12-04 21:14:17 +01:00
Mateusz Pusz
4f75a48ba3
refactor: WeaklyRegular removed from ScalableWith
2024-12-04 21:14:02 +01:00
Mateusz Pusz
054e28671c
refactor: implicit expression variations used in quantity and quantity_point constraints
2024-12-04 20:21:32 +01:00
Mateusz Pusz
b98c640450
feat: missing precondition added for quantity::op/
2024-12-04 20:10:47 +01:00
Mateusz Pusz
29ba8e6f7c
refactor: preconditions for quantity operations now use is_neq_zero
2024-12-04 20:10:18 +01:00
Mateusz Pusz
971197b9e5
refactor: quantity constructor refactored to use another constructor with the result of sudo_cast
2024-12-04 20:08:02 +01:00
Mateusz Pusz
7e789bc1f1
refactor: std::assignable_from used in ValuePreservingTo concept
2024-12-04 19:57:58 +01:00
Mateusz Pusz
6cd7d388b1
refactor: WeaklyRegular moved to the end of the representation constraints
2024-12-04 19:57:16 +01:00
Mateusz Pusz
e44bb7ed55
style: small cleanup of representation concepts
2024-12-01 14:14:19 +01:00
Mateusz Pusz
a444c53fe7
refactor: representation concepts refactored to properly support implicit expression variations
2024-12-01 14:13:41 +01:00
Mateusz Pusz
c582801d84
feat: ScalableWith isolated from Scalar and added as a constraint to Complex and Vector
2024-12-01 14:08:05 +01:00
Mateusz Pusz
4831928802
refactor: Scalar concept refactored to give it a chance to preserve the input type for types simliar to quantity
2024-12-01 14:00:52 +01:00
Mateusz Pusz
c7006f8813
refactor: repeated concept checks removed from get_common_reference
2024-12-01 13:45:34 +01:00
Mateusz Pusz
e585fd9e37
refactor: reference now returns explicit types for inverse, pow, sqrt, and cbrt
2024-12-01 13:39:14 +01:00
Mateusz Pusz
19a2019204
feat: proper constraints for kind_of
2024-11-29 21:20:37 +01:00
Mateusz Pusz
0cc26f4f46
feat: abs(quantity) exposed for conforming freestanding implementations
2024-11-29 13:21:34 +01:00
Mateusz Pusz
51bc3ea5bd
fix: IWYU
2024-11-29 13:19:54 +01:00
Mateusz Pusz
4280e54081
fix: get_quantity_spec compilation fixed on MSVC
2024-11-29 13:19:25 +01:00
Mateusz Pusz
f0885f8027
feat: scaled units are now enclosed in parenthesis (...) instead of brackets [...]
2024-11-29 12:17:53 +01:00
Mateusz Pusz
9c4671790e
refactor: all_are_kinds removed and get_associated_quantity simplified
2024-11-29 11:10:20 +01:00
Mateusz Pusz
a223c08a39
refactor: multiplication and division by scalars was a bad idea for Complex and Vector
2024-11-28 23:02:11 +01:00
Mateusz Pusz
f99a73a75f
refactor: "expression templates" renamed to "symbolic expressions"
2024-11-28 15:34:52 +01:00
Mateusz Pusz
1c4f744eac
fix: compilation fixed again (stupid modules build does not recompile properly and the local build has passed twice with errors in the code :-()
2024-11-26 22:48:56 +01:00
Mateusz Pusz
6883e38573
fix: compilation fixed after the previous commit
2024-11-26 22:38:44 +01:00
Mateusz Pusz
6bfcc3a8ba
feat: precondition added to to_u8string
2024-11-26 22:32:09 +01:00
Mateusz Pusz
d6002ce419
refactor: 💥 quantity_values renamed to representation values
2024-11-26 18:36:37 +01:00
Mateusz Pusz
52b003e6ea
fix: std::abs freestanding compilation issue fixed
2024-11-26 16:54:05 +01:00
Mateusz Pusz
781aa84a82
refactor: inline replaced with MP_UNITS_INLINE
2024-11-26 16:52:36 +01:00
Mateusz Pusz
41a803d025
fix: header dependency fixed in complex.h
2024-11-26 15:42:03 +01:00
Mateusz Pusz
c7eb981f4f
fix: missing poison pills added
2024-11-26 15:40:15 +01:00
Mateusz Pusz
2f3399e02f
fix: gcc compilation fixed
2024-11-26 15:12:50 +01:00
Mateusz Pusz
465f88d500
refactor: 💥 is_XXX customization points for representation types removed
2024-11-26 14:48:08 +01:00
Mateusz Pusz
083ef6adb1
refactor: CPOs refactored to be more constrained
2024-11-26 13:02:17 +01:00
Mateusz Pusz
febdaec85e
feat: text ouptput should fallback to the portable mode when UTF-8 is not used for text_encoding
2024-11-26 10:59:02 +01:00
Mateusz Pusz
3b14b588e9
refactor: type_name_less introduced and used as a default predicate for expression templates
2024-11-26 10:09:28 +01:00
Mateusz Pusz
360cf7d540
refactor: power members refactored to be explicitly exposition only
2024-11-26 09:24:01 +01:00
Mateusz Pusz
b77aa52355
refactor: absolute renamed to point
...
Resolves #645
2024-11-24 14:19:16 +01:00
Mateusz Pusz
36b1707da0
perf: get_complexity, explode, and extract_convertible_quantities results caching added
2024-11-24 13:58:04 +01:00
Mateusz Pusz
026dbed22a
refactor: get_canonical_unit_result refactored to a variable template
2024-11-24 13:51:17 +01:00
Mateusz Pusz
57dbe4a8c6
refactor: unused SameReference concept removed
2024-11-24 10:42:48 +01:00
Mateusz Pusz
b83008cd24
refactor: SameQuantitySpec concept removed and replaced with direct comparison
2024-11-24 10:42:36 +01:00
Mateusz Pusz
5edcb3a2d1
refactor: std::is_trivial will be deprecated in C++26
2024-11-23 17:46:47 +01:00
Mateusz Pusz
906023d4b3
refactor: CPO implemention does not have to use inline for namespace
2024-11-23 17:45:58 +01:00