#ifndef OSRM_GRAPH_TRAITS_HPP #define OSRM_GRAPH_TRAITS_HPP #include namespace osrm { namespace util { namespace traits { // Introspection for an arbitrary .data member attribute template struct HasDataMember : std::false_type { }; template struct HasDataMember().data) > 0))> : std::true_type { }; // Introspection for an arbitrary .target member attribute template struct HasTargetMember : std::false_type { }; template struct HasTargetMember().target) > 0))> : std::true_type { }; // Our graphs require edges to have a .target and .data member attribute template struct HasDataAndTargetMember : std::integral_constant::value && HasTargetMember::value> { }; // Our graphs require nodes to have a .first_edge member attribute template struct HasFirstEdgeMember : std::false_type { }; template struct HasFirstEdgeMember().first_edge) > 0))> : std::true_type { }; } // ns traits } // ns util } // ns osrm #endif // STATIC_GRAPH_TRAITS_HPP