...
This commit is contained in:
@@ -6,7 +6,6 @@ ABSTRACT DEVICE COMPONENTS LIBRARY
|
||||
|
||||
*/
|
||||
|
||||
#include <chrono>
|
||||
#include <concepts>
|
||||
|
||||
#include "../common/adc_traits.h"
|
||||
@@ -18,28 +17,21 @@ namespace adc::interfaces
|
||||
{
|
||||
|
||||
|
||||
template <typename T>
|
||||
// from https://stackoverflow.com/questions/74383254/concept-that-models-only-the-stdchrono-duration-types
|
||||
concept adc_time_duration_c = requires {
|
||||
[]<class Rep, class Period>(std::type_identity<std::chrono::duration<Rep, Period>>) {}(std::type_identity<T>());
|
||||
};
|
||||
|
||||
|
||||
template <adc_time_duration_c... Ts>
|
||||
template <traits::adc_time_duration_c... Ts>
|
||||
struct adc_duration_common_type;
|
||||
|
||||
|
||||
template <adc_time_duration_c T1, adc_time_duration_c T2>
|
||||
template <traits::adc_time_duration_c T1, traits::adc_time_duration_c T2>
|
||||
struct adc_duration_common_type<T1, T2> : std::common_type<T1, T2> {
|
||||
};
|
||||
|
||||
|
||||
template <adc_time_duration_c T1, adc_time_duration_c T2, adc_time_duration_c... Ts>
|
||||
template <traits::adc_time_duration_c T1, traits::adc_time_duration_c T2, traits::adc_time_duration_c... Ts>
|
||||
struct adc_duration_common_type<T1, T2, Ts...> : adc_duration_common_type<std::common_type_t<T1, T2>, Ts...> {
|
||||
};
|
||||
|
||||
|
||||
template <adc_time_duration_c... Ts>
|
||||
template <traits::adc_time_duration_c... Ts>
|
||||
using adc_duration_common_type_t = typename adc_duration_common_type<Ts...>::type;
|
||||
|
||||
|
||||
@@ -92,7 +84,7 @@ template <typename SRVT,
|
||||
typename RMSGT = std::string, // receiving message type
|
||||
typename DURT = adc_common_duration_t // time duration type
|
||||
>
|
||||
concept adc_netservice_c = traits::adc_input_char_range<SMSGT> && traits::adc_output_char_range<RMSGT> && adc_time_duration_c<DURT> &&
|
||||
concept adc_netservice_c = traits::adc_input_char_range<SMSGT> && traits::adc_output_char_range<RMSGT> && traits::adc_time_duration_c<DURT> &&
|
||||
requires(SRVT srv, const SRVT srv_const) {
|
||||
typename SRVT::netservice_ident_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user