Welcome to mp-units!¶
mp-units is a compile-time enabled feature-rich Modern C++ modular/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 with a permissive MIT license.
Important: Help needed!
The mp-units library might be the subject of ISO standardization for C++29. More on this can be found in the following ISO C++ proposals:
- P1935: A C++ Approach to Physical Units,
- P2980: A motivation, scope, and plan for a physical quantities and units library,
- P2981: Improving our safety with a physical quantities and units library,
- P2982:
std::quantity
as a numeric type.
We are actively looking for parties interested in field-trialing the library.
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 from C++23.
Even though the library benefits from C++23 (if available), C++20 is enough to compile and use all of the library's functionality. C++23 features are hidden behind a preprocessor macro providing a backward-compatible way to use it.
As of today, the library compiles fine on the following compilers (or newer):
- gcc-11
- please note that we observed some ICEs on gcc-11
- no problems with gcc-12.2+
- clang-16
- apple-clang-15