2023-06-21 10:55:18 +02:00
|
|
|
# Welcome to **mp-units**!
|
|
|
|
|
|
|
|
|
|
**mp-units** is a compile-time enabled feature-rich Modern C++ header-only library that provides
|
|
|
|
|
compile-time dimensional analysis and unit/quantity manipulation. Its key strengths include safety,
|
|
|
|
|
performance, and developer experience.
|
|
|
|
|
|
|
|
|
|
The library source code is hosted on [GitHub](https://github.com/mpusz/mp-units) with a permissive
|
|
|
|
|
[MIT license](https://github.com/mpusz/units/blob/master/LICENSE.md).
|
|
|
|
|
|
2023-08-30 11:33:30 +02:00
|
|
|
!!! important "Help needed!"
|
2023-06-21 10:55:18 +02:00
|
|
|
|
|
|
|
|
The **mp-units** library might be the subject of ISO standardization for C++29. More on this can
|
|
|
|
|
be found in the ISO C++ proposal [P1935](https://wg21.link/p1935). We are actively looking for
|
|
|
|
|
parties interested in field-trialing the library.
|
|
|
|
|
|
|
|
|
|
??? info "Supported compilers"
|
|
|
|
|
|
|
|
|
|
This library tries to provide the best user experience possible with the C++ language.
|
|
|
|
|
To achieve that, it extensively uses C++20 features and the
|
|
|
|
|
[explicit object parameter](https://en.cppreference.com/w/cpp/language/member_functions#Explicit_object_parameter)
|
|
|
|
|
from C++23.
|
2023-06-21 11:28:24 +02:00
|
|
|
|
2023-06-21 10:55:18 +02:00
|
|
|
Even though the library benefits from C++23 (if available), C++20 is enough to compile and
|
2023-08-26 19:45:53 +02:00
|
|
|
use all of the library's functionality. C++23 features are hidden behind
|
|
|
|
|
a [preprocessor macro](users_guide/framework_basics/systems_of_quantities.md#defining-quantities)
|
2023-06-21 10:55:18 +02:00
|
|
|
providing a backward-compatible way to use it.
|
2023-06-21 11:28:24 +02:00
|
|
|
|
2023-08-26 19:45:53 +02:00
|
|
|
As of today, the library compiles fine on the following compilers (or newer):
|
2023-06-21 11:28:24 +02:00
|
|
|
|
2023-08-26 19:45:53 +02:00
|
|
|
- gcc-11
|
|
|
|
|
- please note that we observed some ICEs on gcc-11
|
|
|
|
|
- no problems with gcc-12.2+
|
|
|
|
|
- clang-16
|