Updated overloads

This commit is contained in:
John Wellbelove 2021-06-24 21:02:32 +01:00 committed by John Wellbelove
parent d566f1ea1a
commit 7e9ca31fb1
2 changed files with 15 additions and 14 deletions

View File

@ -40,44 +40,45 @@ namespace etl
//*************************************************************************
/// Variadic template definition of overload.
//*************************************************************************
template<class... Ts>
struct overload : Ts...
template<class... TOverloads>
struct overload : TOverloads...
{
using Ts::operator()...;
using TOverloads::operator()...;
};
//*************************************************************************
/// Template deduction guide.
//*************************************************************************
template<class... Ts> overload(Ts...)->overload<Ts...>;
template<class... TOverloads> overload(TOverloads...)->overload<TOverloads...>;
#else
//*************************************************************************
/// Variadic template definition of overload.
//*************************************************************************
template <typename T, typename... Ts>
struct overload : T, overload<Ts...>
template <typename TOverload, typename... TOthers>
struct overload : TOverload, overload<TOthers...>
{
using T::operator();
using overload<Ts...>::operator();
using TOverload::operator();
using overload<TOthers...>::operator();
};
//*************************************************************************
/// Template specialisation of overload for one type.
//*************************************************************************
template <typename T> struct overload<T> : T
template <typename TOverload>
struct overload<TOverload> : TOverload
{
using T::operator();
using TOverload::operator();
};
#endif
//*************************************************************************
/// Make an overload.
//*************************************************************************
template <typename... T>
constexpr auto make_overload(T&&... t)
template <typename... TOverloads>
constexpr auto make_overload(TOverloads&&... overloads)
{
return overload<T...>{ etl::forward<T>(t)... };
return overload<TOverloads...>{ etl::forward<TOverloads>(overloads)... };
}
}

View File

@ -98,7 +98,7 @@ SOFTWARE.
#define ETL_MEM_CAST_FORCE_CPP03
#endif
#define ETL_OVERLOAD_FORCE_CPP11
//#define ETL_OVERLOAD_FORCE_CPP11
#if defined(ETL_NO_STL)
#define ETL_TIMER_SEMAPHORE_TYPE uint32_t