SI 2.5.4
A header only c++ library that provides type safety and user defined literals for handling physical values defined in the International System of Units.
Loading...
Searching...
No Matches
electric_potential.h
Go to the documentation of this file.
1
12#pragma once
13
16#include "detail/unit.h"
17#include "detail/unit_symbol.h"
18#include "electric_charge.h"
19#include "electric_current.h"
20#include "energy.h"
21#include "power.h"
22
23namespace SI {
24template <typename _type, class _ratio = std::ratio<1>>
25using electric_potential_t = detail::unit_t<'U', std::ratio<1>, _type, _ratio>;
26
28template <typename _type>
30template <typename _type>
32template <typename _type>
34template <typename _type>
36template <typename _type>
38template <typename _type>
40template <typename _type>
42template <typename _type>
44template <typename _type>
46template <typename _type>
48template <typename _type>
50template <typename _type>
52template <typename _type>
54
55// specialize unit_symbol for usage with stream operators
56template <>
57struct unit_symbol<'U', std::ratio<1>> : SI::detail::unit_symbol_impl<'V'> {};
58
59template <typename _ratio>
60struct unit_symbol<'U', _ratio>
61 : SI::detail::unit_symbol_impl<SI::detail::ratio_prefix<_ratio>::value,
62 'V'> {};
63
64namespace detail {
67} // namespace detail
68
69inline namespace literals {
70template <char... _digits> constexpr atto_volt_t<int64_t> operator""_aV() {
71 return atto_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
72}
73
74template <char... _digits> constexpr femto_volt_t<int64_t> operator""_fV() {
75 return femto_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
76}
77
78template <char... _digits> constexpr pico_volt_t<int64_t> operator""_pV() {
79 return pico_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
80}
81
82template <char... _digits> constexpr nano_volt_t<int64_t> operator""_nV() {
83 return nano_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
84}
85
86template <char... _digits> constexpr micro_volt_t<int64_t> operator""_uV() {
87 return micro_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
88}
89
90template <char... _digits> constexpr milli_volt_t<int64_t> operator""_mV() {
91 return milli_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
92}
93
94template <char... _digits> constexpr volt_t<int64_t> operator""_V() {
95 return volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
96}
97
98template <char... _digits> constexpr kilo_volt_t<int64_t> operator""_kV() {
99 return kilo_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
100}
101
102template <char... _digits> constexpr mega_volt_t<int64_t> operator""_MV() {
103 return mega_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
104}
105
106template <char... _digits> constexpr giga_volt_t<int64_t> operator""_GV() {
107 return giga_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
108}
109
110template <char... _digits> constexpr tera_volt_t<int64_t> operator""_TV() {
111 return tera_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
112}
113
114template <char... _digits> constexpr peta_volt_t<int64_t> operator""_PV() {
115 return peta_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
116}
117
118template <char... _digits> constexpr exa_volt_t<int64_t> operator""_EV() {
119 return exa_volt_t<int64_t>{SI::detail::parsing::Number<_digits...>::value};
120}
121
122constexpr atto_volt_t<long double> operator""_aV(long double value) {
123 return atto_volt_t<long double>{value};
124}
125
126constexpr femto_volt_t<long double> operator""_fV(long double value) {
127 return femto_volt_t<long double>{value};
128}
129
130constexpr pico_volt_t<long double> operator""_pV(long double value) {
131 return pico_volt_t<long double>{value};
132}
133
134constexpr nano_volt_t<long double> operator""_nV(long double value) {
135 return nano_volt_t<long double>{value};
136}
137
138constexpr micro_volt_t<long double> operator""_uV(long double value) {
139 return micro_volt_t<long double>{value};
140}
141
142constexpr milli_volt_t<long double> operator""_mV(long double value) {
143 return milli_volt_t<long double>{value};
144}
145
146constexpr volt_t<long double> operator""_V(long double value) {
147 return volt_t<long double>{value};
148}
149
150constexpr kilo_volt_t<long double> operator""_kV(long double value) {
151 return kilo_volt_t<long double>{value};
152}
153
154constexpr mega_volt_t<long double> operator""_MV(long double value) {
155 return mega_volt_t<long double>{value};
156}
157
158constexpr giga_volt_t<long double> operator""_GV(long double value) {
159 return giga_volt_t<long double>{value};
160}
161
162constexpr tera_volt_t<long double> operator""_TV(long double value) {
163 return tera_volt_t<long double>{value};
164}
165
166constexpr peta_volt_t<long double> operator""_PV(long double value) {
167 return peta_volt_t<long double>{value};
168}
169
170constexpr exa_volt_t<long double> operator""_EV(long double value) {
171 return exa_volt_t<long double>{value};
172}
173
174} // namespace literals
175} // namespace SI
Definition absorbed_dose.h:18
#define BUILD_UNIT_FROM_DIVISION(RESULTING_UNIT_T, DIVIDEND_UNIT_T, DIVISOR_UNIT_T)
Definition operator_helpers.h:22
interface class for number
Definition number_parser.h:111
Compile time string provider for conversion of unit types to strings.
Definition unit_symbol.h:21
base template class for holding values of type _type to be multiplied with a ratio _ratio
Definition unit.h:51
Base struct. Unusable needs template overloading.
Definition unit_symbol.h:64