From 700cde2d499742160deb361f42b7e861ae1db8ed Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Mon, 29 Jul 2024 14:18:30 +0200 Subject: Renaming to new standard --- examples/basic.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/basic.cpp (limited to 'examples') diff --git a/examples/basic.cpp b/examples/basic.cpp new file mode 100644 index 0000000..d322ac7 --- /dev/null +++ b/examples/basic.cpp @@ -0,0 +1,55 @@ +#include "../c++/kelunit/distance/meter.hpp" +#include "../c++/kelunit/time/second.hpp" + +#include "../c++/kelunit/unit_print.hpp" + +#include + +int main(){ + /** + * The definition is a bit convoluted, so I leave it in the hands of the headers themselves and define a convenience alias for the user. + * meter e.g. is defined by + * + * namespace unit_type { + * struct meter {}; + * } + * template + * using meter = unit>; + * + * which then can be used as follows + */ + using scalar = kel::scalar; + using meter = kel::meter; + using square_meter = kel::square_meter; + using second = kel::second; + + meter a = 6.f; + + meter b = 3.f; + + second s = 10.f; + + // Since it is not compileable I cannot show it, but c + s would throw a compilation error. + meter c = a+b; + meter d = a-b; + + // Auto deduced type. Based on the template parameters automatically stitches together a valid unit + auto mps = b / s; + + // Technically auto deduced, but predefined for convenience. + square_meter e = a*b; + // + scalar f = a/b; + + std::cout<<"Values:\n"; + std::cout<<"a: "<