Cross compiler compatibity changes

This commit is contained in:
John Wellbelove 2021-07-18 09:53:13 +01:00
parent e9a9e8d1af
commit a7420267a6
4 changed files with 16 additions and 23 deletions

View File

@ -37,7 +37,7 @@ SOFTWARE.
namespace etl
{
#if ETL_CPP14_SUPPORTED
#if ETL_CPP11_SUPPORTED
#if ETL_CPP17_SUPPORTED && !defined(ETL_OVERLOAD_FORCE_CPP14)
//*************************************************************************
@ -49,15 +49,6 @@ namespace etl
using TOverloads::operator()...;
};
//*************************************************************************
/// Make an overload.
//*************************************************************************
template <typename... TOverloads>
constexpr auto make_overload(TOverloads&&... overloads)
{
return overload<TOverloads...>{ etl::forward<TOverloads>(overloads)... };
}
//*************************************************************************
/// Template deduction guide.
//*************************************************************************
@ -65,6 +56,9 @@ namespace etl
#else
//*************************************************************************
/// Variadic template definition of overload for C++14.
//*************************************************************************
template <typename TFirst, typename... TOthers>
struct overload : TFirst, overload<TOthers...>
{
@ -78,16 +72,17 @@ namespace etl
using TFirst::operator();
};
#endif
//*************************************************************************
/// Make an overload.
//*************************************************************************
template <typename... TOthers>
constexpr auto make_overload(TOthers&&... overloads)
template <typename... TOverloads>
constexpr overload<TOverloads...> make_overload(TOverloads&&... overloads)
{
return overload<TOthers...>{ etl::forward<TOthers>(overloads)... };
return overload<TOverloads...>{ etl::forward<TOverloads>(overloads)... };
}
#endif
#endif
}

View File

@ -100,9 +100,9 @@ SOFTWARE.
#define ETL_MEM_CAST_FORCE_CPP03
#endif
//#define ETL_OVERLOAD_FORCE_CPP14
//#define ETL_OVERLOAD_FORCE_CPP11
//#define ETL_VARIANT_FORCE_CPP11
#define ETL_VARIANT_CPP11_MAX_16_TYPES
//#define ETL_VARIANT_CPP11_MAX_16_TYPES
#if defined(ETL_NO_STL)
#define ETL_TIMER_SEMAPHORE_TYPE uint32_t

View File

@ -65,7 +65,7 @@ namespace
};
template <typename T, typename TOverload>
void Function(T value, TOverload& ol)
void Function(T value, TOverload&& ol)
{
ol(value);
}

View File

@ -774,18 +774,16 @@ namespace
}
//*************************************************************************
TEST(test_variant__accept_functor_with_overload)
{
char result_c;
int result_i;
std::string result_s;
auto visitor = etl::overload
{
[&result_c](char c) { result_c = 1; },
[&result_i](int i) { result_i = 2; },
[&result_s](const std::string& s) { result_s = "3"; }
};
auto visitor = etl::make_overload([&result_c](char c) { result_c = 1; },
[&result_i](int i) { result_i = 2; },
[&result_s](const std::string& s) { result_s = "3"; });
test_variant_etl_3 variant_etl;