diff --git a/include/extractor/edge_based_graph_factory.hpp b/include/extractor/edge_based_graph_factory.hpp index dd5454f519a..fed9074988d 100644 --- a/include/extractor/edge_based_graph_factory.hpp +++ b/include/extractor/edge_based_graph_factory.hpp @@ -44,7 +44,10 @@ struct TurnIndexBlock NodeID to_id; }; #pragma pack(pop) -static_assert(std::is_trivial::value, "TurnIndexBlock is not trivial"); +static_assert(std::is_trivially_default_constructible::value, + "TurnIndexBlock must be trivially default constructible."); +static_assert(std::is_trivially_copyable::value, + "TurnIndexBlock must be trivially copyable."); static_assert(sizeof(TurnIndexBlock) == 12, "TurnIndexBlock is not packed correctly"); } // namespace lookup diff --git a/include/util/coordinate.hpp b/include/util/coordinate.hpp index 3fd66e7b328..9b23c3e1e68 100644 --- a/include/util/coordinate.hpp +++ b/include/util/coordinate.hpp @@ -68,30 +68,45 @@ using FloatLongitude = Alias; // range checks on these (toFixed/toFloat, etc) using UnsafeFloatLatitude = Alias; using UnsafeFloatLongitude = Alias; -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "FixedLatitude is not a valid alias"); -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "FixedLongitude is not a valid alias"); -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "FloatLatitude is not a valid alias"); -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "FloatLongitude is not a valid alias"); -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "UnsafeFloatLatitude is not a valid alias"); -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "UnsafeFloatLongitude is not a valid alias"); +static_assert(std::is_standard_layout(), "FixedLatitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "FixedLatitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "FixedLatitude must be trivially copyable."); + +static_assert(std::is_standard_layout(), + "FixedLongitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "FixedLongitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "FixedLongitude must be trivially copyable."); + +static_assert(std::is_standard_layout(), "FloatLatitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "FloatLatitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "FloatLatitude must be trivially copyable."); + +static_assert(std::is_standard_layout(), + "FloatLongitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "FloatLongitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "FloatLongitude must be trivially copyable."); + +static_assert(std::is_standard_layout(), + "UnsafeFloatLatitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "UnsafeFloatLatitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "UnsafeFloatLatitude must be trivially copyable."); + +static_assert(std::is_standard_layout(), + "UnsafeFloatLongitude must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "UnsafeFloatLongitude must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), + "UnsafeFloatLongitude must be trivially copyable."); /** * Converts a typed latitude from floating to fixed representation. diff --git a/include/util/fingerprint.hpp b/include/util/fingerprint.hpp index d28264a53a5..8e7ca1e832f 100644 --- a/include/util/fingerprint.hpp +++ b/include/util/fingerprint.hpp @@ -32,9 +32,12 @@ struct FingerPrint }; static_assert(sizeof(FingerPrint) == 8, "FingerPrint has unexpected size"); -static_assert(std::is_trivial::value, "FingerPrint needs to be trivial."); +static_assert(std::is_trivially_default_constructible::value, + "FingerPrint needs to be trivially default constructible."); +static_assert(std::is_trivially_copyable::value, + "FingerPrint needs to be trivially copyable."); static_assert(std::is_standard_layout::value, - "FingerPrint needs have a standard layout."); + "FingerPrint needs to have a standard layout."); } // namespace osrm::util #endif /* FingerPrint_H */ diff --git a/include/util/typedefs.hpp b/include/util/typedefs.hpp index f03c019ff0c..ab6abc750f7 100644 --- a/include/util/typedefs.hpp +++ b/include/util/typedefs.hpp @@ -69,18 +69,16 @@ struct turn_penalty } // namespace tag using OSMNodeID = osrm::Alias; -// clang-tidy fires `bugprone-throw-keyword-missing` here for unknown reason -// NOLINTNEXTLINE(bugprone-throw-keyword-missing) -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "OSMNodeID is not a valid alias"); +static_assert(std::is_standard_layout(), "OSMNodeID must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "OSMNodeID must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), "OSMNodeID must be trivially copyable."); + using OSMWayID = osrm::Alias; -// NOLINTNEXTLINE(bugprone-throw-keyword-missing) -static_assert(std::is_standard_layout() && - std::is_trivially_default_constructible() && - std::is_trivially_copyable(), - "OSMWayID is not a valid alias"); +static_assert(std::is_standard_layout(), "OSMWayID must have standard layout."); +static_assert(std::is_trivially_default_constructible(), + "OSMWayID must be trivially default constructible."); +static_assert(std::is_trivially_copyable(), "OSMWayID must be trivially copyable."); using DuplicatedNodeID = std::uint64_t; using RestrictionID = std::uint64_t;