17 #include <type_traits>
19 #if defined(ACTS_CONCEPTS_SUPPORTED)
25 concept ChargeConcept = requires(
C c,
float f,
double d) {
27 { c.absQ() } -> std::same_as<float>;
29 { c.extractCharge(f) } -> std::convertible_to<float>;
30 { c.extractCharge(d) } -> std::convertible_to<float>;
32 { c.extractMomentum(f) } -> std::convertible_to<float>;
33 { c.extractMomentum(d) } -> std::convertible_to<float>;
35 { c.qOverP(f, f) } -> std::same_as<float>;
36 { c.qOverP(d, d) } -> std::same_as<double>;
38 { c == c } -> std::same_as<bool>;
39 { c != c } -> std::same_as<bool>;