A C++14-compatible physical units library with no dependencies, focusing on safety, performance, and developer experience.
Au is a C++ physical units library that provides compile-time type safety for handling quantities like length, speed, and voltage. It catches unit errors during compilation with zero runtime overhead, making unit conversions effortless and reliable. It is designed to be compatible with C++14 and newer, with no dependencies and a single-header option.
C++ developers working with physical quantities in applications such as robotics, embedded systems, scientific computing, or engineering simulations.
Au uniquely combines wide C++ version compatibility, easy installation, small compile-time burden, and readable error messages, all while offering advanced features like unit-safe APIs and embedded support.
A C++14-compatible physical units library with no dependencies and a single-file delivery option. Emphasis on safety, accessibility, performance, and developer experience.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Catches unit errors during compilation with zero runtime overhead, ensuring reliability without performance penalty, as highlighted in the key features.
Works with any C++14 or newer compiler including GCC, Clang, and MSVC, making it accessible for diverse development environments, as evidenced by the CI badges.
Offers a customizable single-header option with no external dependencies, simplifying integration into existing projects, per the installation instructions.
Designed and proven for use in embedded environments, with support from Aurora's embedded teams since inception, as stated in the description.
As admitted in the README note, matrix and vector operations are not yet implemented, limiting use in physics or engineering simulations that require these features.
While claimed to have a small burden, the template-heavy nature can increase compilation times in large projects, a common trade-off for compile-time safety libraries.
Compared to established alternatives like Boost.Units, Au has a smaller community and fewer third-party integrations, which might affect long-term support and resources.