diff --git a/Common/MathUtils/include/MathUtils/Cartesian.h b/Common/MathUtils/include/MathUtils/Cartesian.h index 4a2da0505aea8..d7e421ecd965b 100644 --- a/Common/MathUtils/include/MathUtils/Cartesian.h +++ b/Common/MathUtils/include/MathUtils/Cartesian.h @@ -284,7 +284,8 @@ GPUdi() SMatrix> Similarity(const SMatrix struct is_forced_trivially_copyable; diff --git a/Detectors/DCS/include/DetectorsDCS/DataPointCompositeObject.h b/Detectors/DCS/include/DetectorsDCS/DataPointCompositeObject.h index 8ac2b2d5f7710..f7f21282d28ed 100644 --- a/Detectors/DCS/include/DetectorsDCS/DataPointCompositeObject.h +++ b/Detectors/DCS/include/DetectorsDCS/DataPointCompositeObject.h @@ -312,7 +312,8 @@ struct is_messageable : std::true_type { } // namespace o2 /// Defining DataPointCompositeObject explicitly as copiable -namespace o2::framework { +namespace o2::framework +{ template struct is_forced_trivially_copyable; diff --git a/Detectors/DCS/include/DetectorsDCS/DataPointIdentifier.h b/Detectors/DCS/include/DetectorsDCS/DataPointIdentifier.h index 0daef4fd24055..ccd2ac851e2e1 100644 --- a/Detectors/DCS/include/DetectorsDCS/DataPointIdentifier.h +++ b/Detectors/DCS/include/DetectorsDCS/DataPointIdentifier.h @@ -244,7 +244,8 @@ struct hash { } }; } // namespace std -namespace o2::framework { +namespace o2::framework +{ template struct is_forced_trivially_copyable; diff --git a/Framework/Core/include/Framework/TypeTraits.h b/Framework/Core/include/Framework/TypeTraits.h index 65f8c3b8bedc3..bb2d338f42af3 100644 --- a/Framework/Core/include/Framework/TypeTraits.h +++ b/Framework/Core/include/Framework/TypeTraits.h @@ -39,17 +39,17 @@ struct is_forced_non_messageable< }; template -struct is_forced_trivially_copyable: std::false_type { +struct is_forced_trivially_copyable : std::false_type { }; // TODO: extend this to exclude structs with pointer data members // see e.g. https://stackoverflow.com/questions/32880990/how-to-check-if-class-has-pointers-in-c14 template -struct is_messageable : std::conditional<(std::is_trivially_copyable::value || // +struct is_messageable : std::conditional<(std::is_trivially_copyable::value || // framework::is_forced_trivially_copyable::value) && // - !std::is_polymorphic::value && // - !std::is_pointer::value && // - !is_forced_non_messageable::value, // + !std::is_polymorphic::value && // + !std::is_pointer::value && // + !is_forced_non_messageable::value, // std::true_type, std::false_type>::type { };