Warning, file /include/Acts/Utilities/Concepts.hpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include <concepts>
0012 #include <functional>
0013 #include <type_traits>
0014
0015 namespace Acts::Concepts {
0016
0017 template <typename T, typename... Ts>
0018 concept same_as_any_of = (std::same_as<T, Ts> || ...);
0019
0020
0021
0022 template <typename T>
0023 concept nothrow_move_constructible = std::is_nothrow_move_constructible_v<T>;
0024
0025
0026 template <typename T>
0027 concept arithmetic = std::integral<T> || std::floating_point<T>;
0028
0029
0030
0031 template <typename T1, typename T2>
0032 concept decayed_same_as = std::same_as<std::decay_t<T1>, std::decay_t<T2> >;
0033
0034
0035
0036 template <auto Callable, typename U, typename... Args>
0037 concept invocable_and_returns = requires(Args... args) {
0038 { std::invoke(Callable, args...) } -> std::same_as<U>;
0039 };
0040 }