TypeSI
Units of 'Système international' Blended for C++
Loading...
Searching...
No Matches
si_derived.hpp
Go to the documentation of this file.
1#pragma once
4#include "si_base.hpp"
5#include <utility>
6namespace Si {
8namespace Derived {
11template <typename T>
12using Hertz = decltype(std::declval<Internal::Dimensionless<T>>() /
13 std::declval<Base::Second<T>>());
16template <typename T>
17using Newton = decltype(
18 std::declval<Base::Kilogram<T>>() * std::declval<Base::Meter<T>>() /
19 (std::declval<Base::Second<T>>() * std::declval<Base::Second<T>>()));
22template <typename T>
23using Pascal =
24 decltype(std::declval<Newton<T>>() /
25 (std::declval<Base::Meter<T>>() * std::declval<Base::Meter<T>>()));
28template <typename T>
29using Joule =
30 decltype(std::declval<Base::Meter<T>>() * std::declval<Newton<T>>());
33template <typename T>
34using Watt =
35 decltype(std::declval<Joule<T>>() / std::declval<Base::Second<T>>());
38template <typename T>
39using Coulomb =
40 decltype(std::declval<Base::Second<T>>() * std::declval<Base::Ampere<T>>());
43template <typename T>
44using Volt =
45 decltype(std::declval<Watt<T>>() / std::declval<Base::Ampere<T>>());
48template <typename T>
49using Farad = decltype(std::declval<Coulomb<T>>() / std::declval<Volt<T>>());
52template <typename T>
53using Ohm = decltype(std::declval<Volt<T>>() / std::declval<Base::Ampere<T>>());
56template <typename T>
57using Siemens =
58 decltype(std::declval<Base::Ampere<T>>() / std::declval<Volt<T>>());
61template <typename T>
62using Weber =
63 decltype(std::declval<Joule<T>>() / std::declval<Base::Ampere<T>>());
66template <typename T>
67using Tesla =
68 decltype(std::declval<Newton<T>>() / (std::declval<Base::Ampere<T>>() *
69 std::declval<Base::Meter<T>>()));
72template <typename T>
73using Henry =
74 decltype(std::declval<Weber<T>>() / std::declval<Base::Ampere<T>>());
77template <typename T> using Lumen = Base::Candela<T>;
80template <typename T>
81using Lux =
82 decltype(std::declval<Lumen<T>>() /
83 (std::declval<Base::Meter<T>>() * std::declval<Base::Meter<T>>()));
86template <typename T> using Becquerel = Hertz<T>;
89template <typename T>
90using Gray =
91 decltype(std::declval<Joule<T>>() / std::declval<Base::Kilogram<T>>());
94template <typename T> using Sievert = Gray<T>;
97template <typename T>
98using Katal =
99 decltype(std::declval<Base::Mole<T>>() / std::declval<Base::Second<T>>());
101namespace Literals {
103Hertz<long double> operator"" _Hz(long double value) {
104 return Hertz<long double>(value);
105}
107Newton<long double> operator"" _N(long double value) {
108 return Newton<long double>(value);
109}
111Pascal<long double> operator"" _Pa(long double value) {
112 return Pascal<long double>(value);
113}
115Joule<long double> operator"" _J(long double value) {
116 return Joule<long double>(value);
117}
119Watt<long double> operator"" _W(long double value) {
120 return Watt<long double>(value);
121}
123Coulomb<long double> operator"" _C(long double value) {
124 return Coulomb<long double>(value);
125}
127Volt<long double> operator"" _V(long double value) {
128 return Volt<long double>(value);
129}
131Farad<long double> operator"" _F(long double value) {
132 return Farad<long double>(value);
133}
136Ohm<long double> operator"" _Ohm(long double value) {
137 return Ohm<long double>(value);
138}
140Siemens<long double> operator"" _S(long double value) {
141 return Siemens<long double>(value);
142}
144Weber<long double> operator"" _Wb(long double value) {
145 return Weber<long double>(value);
146}
148Tesla<long double> operator"" _T(long double value) {
149 return Tesla<long double>(value);
150}
152Henry<long double> operator"" _H(long double value) {
153 return Henry<long double>(value);
154}
156Lumen<long double> operator"" _lm(long double value) {
157 return Lumen<long double>(value);
158}
160Lux<long double> operator"" _lx(long double value) {
161 return Lux<long double>(value);
162}
164Becquerel<long double> operator"" _Bq(long double value) {
165 return Becquerel<long double>(value);
166}
168Gray<long double> operator"" _Gy(long double value) {
169 return Gray<long double>(value);
170}
172Sievert<long double> operator"" _Sv(long double value) {
173 return Sievert<long double>(value);
174}
176Katal<long double> operator"" _kat(long double value) {
177 return Katal<long double>(value);
178}
179} // namespace Literals
180} // namespace Derived
181} // namespace Si
Generic unit type.
Definition: si_internal.hpp:22
decltype(std::declval< Weber< T > >()/std::declval< Base::Ampere< T > >()) Henry
Definition: si_derived.hpp:74
decltype(std::declval< Base::Ampere< T > >()/std::declval< Volt< T > >()) Siemens
Definition: si_derived.hpp:58
Hertz< T > Becquerel
Definition: si_derived.hpp:86
decltype(std::declval< Base::Kilogram< T > >() *std::declval< Base::Meter< T > >()/(std::declval< Base::Second< T > >() *std::declval< Base::Second< T > >())) Newton
Definition: si_derived.hpp:19
decltype(std::declval< Volt< T > >()/std::declval< Base::Ampere< T > >()) Ohm
Definition: si_derived.hpp:53
decltype(std::declval< Lumen< T > >()/(std::declval< Base::Meter< T > >() *std::declval< Base::Meter< T > >())) Lux
Definition: si_derived.hpp:83
decltype(std::declval< Newton< T > >()/(std::declval< Base::Ampere< T > >() *std::declval< Base::Meter< T > >())) Tesla
Definition: si_derived.hpp:69
decltype(std::declval< Newton< T > >()/(std::declval< Base::Meter< T > >() *std::declval< Base::Meter< T > >())) Pascal
Definition: si_derived.hpp:25
decltype(std::declval< Watt< T > >()/std::declval< Base::Ampere< T > >()) Volt
Definition: si_derived.hpp:45
decltype(std::declval< Base::Meter< T > >() *std::declval< Newton< T > >()) Joule
Definition: si_derived.hpp:30
decltype(std::declval< Joule< T > >()/std::declval< Base::Kilogram< T > >()) Gray
Definition: si_derived.hpp:91
decltype(std::declval< Internal::Dimensionless< T > >()/std::declval< Base::Second< T > >()) Hertz
Definition: si_derived.hpp:13
decltype(std::declval< Base::Second< T > >() *std::declval< Base::Ampere< T > >()) Coulomb
Definition: si_derived.hpp:40
decltype(std::declval< Coulomb< T > >()/std::declval< Volt< T > >()) Farad
Definition: si_derived.hpp:49
decltype(std::declval< Base::Mole< T > >()/std::declval< Base::Second< T > >()) Katal
Definition: si_derived.hpp:99
decltype(std::declval< Joule< T > >()/std::declval< Base::Ampere< T > >()) Weber
Definition: si_derived.hpp:63
decltype(std::declval< Joule< T > >()/std::declval< Base::Second< T > >()) Watt
Definition: si_derived.hpp:35
Gray< T > Sievert
Definition: si_derived.hpp:94
Base SI units.