From 7aacf5a3bff124bf25f8e1214b5169edeecac79b Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 22 Feb 2024 20:25:05 +0100 Subject: [PATCH] fix: ODR violations in C++ modules fixed for clang-18 --- src/systems/include/mp-units/systems/angular/math.h | 4 +++- src/systems/include/mp-units/systems/angular/units.h | 2 ++ src/systems/include/mp-units/systems/cgs/cgs.h | 4 +++- src/systems/include/mp-units/systems/hep/hep.h | 4 +++- src/systems/include/mp-units/systems/iau/iau.h | 4 +++- .../include/mp-units/systems/iec80000/binary_prefixes.h | 2 ++ .../include/mp-units/systems/iec80000/quantities.h | 2 ++ src/systems/include/mp-units/systems/iec80000/units.h | 4 +++- src/systems/include/mp-units/systems/imperial/imperial.h | 4 +++- .../mp-units/systems/international/international.h | 4 +++- .../mp-units/systems/isq/atomic_and_nuclear_physics.h | 2 ++ .../include/mp-units/systems/isq/base_quantities.h | 2 ++ .../include/mp-units/systems/isq/electromagnetism.h | 2 ++ src/systems/include/mp-units/systems/isq/mechanics.h | 2 ++ src/systems/include/mp-units/systems/isq/si_quantities.h | 2 ++ src/systems/include/mp-units/systems/isq/space_and_time.h | 2 ++ src/systems/include/mp-units/systems/isq/thermodynamics.h | 2 ++ .../include/mp-units/systems/isq_angle/isq_angle.h | 2 ++ src/systems/include/mp-units/systems/natural/natural.h | 4 +++- src/systems/include/mp-units/systems/si/chrono.h | 4 +++- src/systems/include/mp-units/systems/si/constants.h | 2 ++ src/systems/include/mp-units/systems/si/math.h | 4 +++- src/systems/include/mp-units/systems/si/prefixes.h | 2 ++ src/systems/include/mp-units/systems/si/units.h | 8 +++++++- .../include/mp-units/systems/typographic/typographic.h | 4 +++- src/systems/include/mp-units/systems/usc/usc.h | 4 +++- src/systems/mp-units-systems.cpp | 2 ++ 27 files changed, 71 insertions(+), 13 deletions(-) diff --git a/src/systems/include/mp-units/systems/angular/math.h b/src/systems/include/mp-units/systems/angular/math.h index bbfaa033..70c0fc41 100644 --- a/src/systems/include/mp-units/systems/angular/math.h +++ b/src/systems/include/mp-units/systems/angular/math.h @@ -22,12 +22,14 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include #include #include -#include #include +#endif +#include // IWYU pragma: begin_exports #include diff --git a/src/systems/include/mp-units/systems/angular/units.h b/src/systems/include/mp-units/systems/angular/units.h index 1f129781..507be295 100644 --- a/src/systems/include/mp-units/systems/angular/units.h +++ b/src/systems/include/mp-units/systems/angular/units.h @@ -22,9 +22,11 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include #include +#endif namespace mp_units::angular { diff --git a/src/systems/include/mp-units/systems/cgs/cgs.h b/src/systems/include/mp-units/systems/cgs/cgs.h index 7c59c700..0fe06322 100644 --- a/src/systems/include/mp-units/systems/cgs/cgs.h +++ b/src/systems/include/mp-units/systems/cgs/cgs.h @@ -22,8 +22,10 @@ #pragma once -#include +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif +#include namespace mp_units::cgs { diff --git a/src/systems/include/mp-units/systems/hep/hep.h b/src/systems/include/mp-units/systems/hep/hep.h index 637fc27f..c7c4a864 100644 --- a/src/systems/include/mp-units/systems/hep/hep.h +++ b/src/systems/include/mp-units/systems/hep/hep.h @@ -22,8 +22,10 @@ #pragma once -#include +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif +#include template<> inline constexpr std::optional mp_units::known_first_factor<334'524'384'739> = 334'524'384'739; diff --git a/src/systems/include/mp-units/systems/iau/iau.h b/src/systems/include/mp-units/systems/iau/iau.h index 17898f44..3bd55032 100644 --- a/src/systems/include/mp-units/systems/iau/iau.h +++ b/src/systems/include/mp-units/systems/iau/iau.h @@ -22,9 +22,11 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif #include #include -#include namespace mp_units::iau { diff --git a/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h b/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h index 112e71a8..f32daffb 100644 --- a/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h +++ b/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif namespace mp_units::iec80000 { diff --git a/src/systems/include/mp-units/systems/iec80000/quantities.h b/src/systems/include/mp-units/systems/iec80000/quantities.h index d28064dd..45050479 100644 --- a/src/systems/include/mp-units/systems/iec80000/quantities.h +++ b/src/systems/include/mp-units/systems/iec80000/quantities.h @@ -22,8 +22,10 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include +#endif #include #include diff --git a/src/systems/include/mp-units/systems/iec80000/units.h b/src/systems/include/mp-units/systems/iec80000/units.h index 2f80e167..31c958a8 100644 --- a/src/systems/include/mp-units/systems/iec80000/units.h +++ b/src/systems/include/mp-units/systems/iec80000/units.h @@ -22,9 +22,11 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif #include #include -#include namespace mp_units::iec80000 { diff --git a/src/systems/include/mp-units/systems/imperial/imperial.h b/src/systems/include/mp-units/systems/imperial/imperial.h index e99ae860..cd48d83f 100644 --- a/src/systems/include/mp-units/systems/imperial/imperial.h +++ b/src/systems/include/mp-units/systems/imperial/imperial.h @@ -22,8 +22,10 @@ #pragma once -#include +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif +#include namespace mp_units::imperial { diff --git a/src/systems/include/mp-units/systems/international/international.h b/src/systems/include/mp-units/systems/international/international.h index 4177e8fc..93208fc5 100644 --- a/src/systems/include/mp-units/systems/international/international.h +++ b/src/systems/include/mp-units/systems/international/international.h @@ -22,9 +22,11 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif #include #include -#include namespace mp_units::international { diff --git a/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h b/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h index bdffc6ba..706ad242 100644 --- a/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h +++ b/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/base_quantities.h b/src/systems/include/mp-units/systems/isq/base_quantities.h index e57d8ec6..bbb0af2e 100644 --- a/src/systems/include/mp-units/systems/isq/base_quantities.h +++ b/src/systems/include/mp-units/systems/isq/base_quantities.h @@ -22,9 +22,11 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include #include +#endif namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/electromagnetism.h b/src/systems/include/mp-units/systems/isq/electromagnetism.h index 2ba2aa9f..6d120808 100644 --- a/src/systems/include/mp-units/systems/isq/electromagnetism.h +++ b/src/systems/include/mp-units/systems/isq/electromagnetism.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include #include #include diff --git a/src/systems/include/mp-units/systems/isq/mechanics.h b/src/systems/include/mp-units/systems/isq/mechanics.h index 90daaaae..cc220182 100644 --- a/src/systems/include/mp-units/systems/isq/mechanics.h +++ b/src/systems/include/mp-units/systems/isq/mechanics.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include #include diff --git a/src/systems/include/mp-units/systems/isq/si_quantities.h b/src/systems/include/mp-units/systems/isq/si_quantities.h index 33621b75..6ed1095c 100644 --- a/src/systems/include/mp-units/systems/isq/si_quantities.h +++ b/src/systems/include/mp-units/systems/isq/si_quantities.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/space_and_time.h b/src/systems/include/mp-units/systems/isq/space_and_time.h index 03846884..c835f761 100644 --- a/src/systems/include/mp-units/systems/isq/space_and_time.h +++ b/src/systems/include/mp-units/systems/isq/space_and_time.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/thermodynamics.h b/src/systems/include/mp-units/systems/isq/thermodynamics.h index 53c025ad..2e25fbf9 100644 --- a/src/systems/include/mp-units/systems/isq/thermodynamics.h +++ b/src/systems/include/mp-units/systems/isq/thermodynamics.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include #include #include diff --git a/src/systems/include/mp-units/systems/isq_angle/isq_angle.h b/src/systems/include/mp-units/systems/isq_angle/isq_angle.h index 2fa547ab..111853a1 100644 --- a/src/systems/include/mp-units/systems/isq_angle/isq_angle.h +++ b/src/systems/include/mp-units/systems/isq_angle/isq_angle.h @@ -22,8 +22,10 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include +#endif #include #include diff --git a/src/systems/include/mp-units/systems/natural/natural.h b/src/systems/include/mp-units/systems/natural/natural.h index 5221dada..3d59376c 100644 --- a/src/systems/include/mp-units/systems/natural/natural.h +++ b/src/systems/include/mp-units/systems/natural/natural.h @@ -22,11 +22,13 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#include +#endif #include #include #include -#include namespace mp_units::natural { diff --git a/src/systems/include/mp-units/systems/si/chrono.h b/src/systems/include/mp-units/systems/si/chrono.h index 5784dabb..fb11307c 100644 --- a/src/systems/include/mp-units/systems/si/chrono.h +++ b/src/systems/include/mp-units/systems/si/chrono.h @@ -22,12 +22,14 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include +#include +#endif #include #include #include -#include namespace mp_units { diff --git a/src/systems/include/mp-units/systems/si/constants.h b/src/systems/include/mp-units/systems/si/constants.h index 53d499e4..f527908a 100644 --- a/src/systems/include/mp-units/systems/si/constants.h +++ b/src/systems/include/mp-units/systems/si/constants.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif #include namespace mp_units::si { diff --git a/src/systems/include/mp-units/systems/si/math.h b/src/systems/include/mp-units/systems/si/math.h index eafddcbf..77722828 100644 --- a/src/systems/include/mp-units/systems/si/math.h +++ b/src/systems/include/mp-units/systems/si/math.h @@ -22,13 +22,15 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include #include #include #include +#include +#endif #include #include -#include // IWYU pragma: begin_exports #include diff --git a/src/systems/include/mp-units/systems/si/prefixes.h b/src/systems/include/mp-units/systems/si/prefixes.h index 0984f74f..a30e7546 100644 --- a/src/systems/include/mp-units/systems/si/prefixes.h +++ b/src/systems/include/mp-units/systems/si/prefixes.h @@ -22,7 +22,9 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif namespace mp_units::si { diff --git a/src/systems/include/mp-units/systems/si/units.h b/src/systems/include/mp-units/systems/si/units.h index 9c622072..bd0b9aab 100644 --- a/src/systems/include/mp-units/systems/si/units.h +++ b/src/systems/include/mp-units/systems/si/units.h @@ -22,10 +22,13 @@ #pragma once +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#include +#endif +// #include #include #include -#include namespace mp_units { @@ -55,17 +58,20 @@ inline constexpr struct radian : named_unit<"rad", metre / metre, kind_of> {} steradian; inline constexpr struct hertz : named_unit<"Hz", one / second, kind_of> {} hertz; inline constexpr struct newton : named_unit<"N", kilogram * metre / square(second)> {} newton; +// inline constexpr struct newton : named_unit<"N", kilogram * metre / square(second), kind_of> {} newton; #ifdef pascal #pragma push_macro("pascal") #undef pascal #define MP_UNITS_REDEFINE_PASCAL #endif inline constexpr struct pascal : named_unit<"Pa", newton / square(metre)> {} pascal; +// inline constexpr struct pascal : named_unit<"Pa", newton / square(metre), kind_of> {} pascal; #ifdef MP_UNITS_REDEFINE_PASCAL #pragma pop_macro("pascal") #undef MP_UNITS_REDEFINE_PASCAL #endif inline constexpr struct joule : named_unit<"J", newton * metre> {} joule; +// inline constexpr struct joule : named_unit<"J", newton * metre, kind_of> {} joule; inline constexpr struct watt : named_unit<"W", joule / second> {} watt; inline constexpr struct coulomb : named_unit<"C", ampere * second> {} coulomb; inline constexpr struct volt : named_unit<"V", watt / ampere> {} volt; diff --git a/src/systems/include/mp-units/systems/typographic/typographic.h b/src/systems/include/mp-units/systems/typographic/typographic.h index 6f1fcfaa..ede300a1 100644 --- a/src/systems/include/mp-units/systems/typographic/typographic.h +++ b/src/systems/include/mp-units/systems/typographic/typographic.h @@ -22,8 +22,10 @@ #pragma once -#include +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif +#include namespace mp_units::typographic { diff --git a/src/systems/include/mp-units/systems/usc/usc.h b/src/systems/include/mp-units/systems/usc/usc.h index 909a8eb2..bcd51ccb 100644 --- a/src/systems/include/mp-units/systems/usc/usc.h +++ b/src/systems/include/mp-units/systems/usc/usc.h @@ -22,8 +22,10 @@ #pragma once -#include +#ifndef MP_UNITS_IN_MODULE_INTERFACE #include +#endif +#include namespace mp_units::usc { diff --git a/src/systems/mp-units-systems.cpp b/src/systems/mp-units-systems.cpp index f9494203..d5158982 100644 --- a/src/systems/mp-units-systems.cpp +++ b/src/systems/mp-units-systems.cpp @@ -9,6 +9,8 @@ export import mp_units.core; export { +#define MP_UNITS_IN_MODULE_INTERFACE + #include #include #include