This commit is contained in:
Timur A. Fatkhullin
2024-04-30 22:30:04 +03:00
parent b4a4722583
commit 066cb7cf95
3 changed files with 266 additions and 142 deletions

View File

@@ -67,7 +67,7 @@ struct adc_func_traits_helper_t<R, Arg, Args...> {
// callable traits
template <typename F>
template <typename F, typename = void>
struct adc_func_traits;
template <typename R, typename... Args>
@@ -87,9 +87,17 @@ struct adc_func_traits<R (C::*)(Args...) const> : adc_func_traits_helper_t<R, Ar
};
template <typename F>
struct adc_func_traits : adc_func_traits<decltype(&std::remove_reference_t<F>::operator())> {
// struct adc_func_traits : adc_func_traits<decltype(&std::remove_reference_t<F>::operator())> {
struct adc_func_traits<F, std::enable_if_t<std::is_class_v<F>>> : adc_func_traits<decltype(&F::operator())> {
};
template <typename F>
struct adc_func_traits<F&> : adc_func_traits<F> {
};
template <typename F>
struct adc_func_traits<F&&> : adc_func_traits<F> {
};
template <typename T>
using adc_retval_t = typename adc_func_traits<T>::ret_t;