mirror of
https://github.com/ETLCPP/etl.git
synced 2026-11-09 14:49:53 +08:00
Cross compiler compatibity changes
This commit is contained in:
parent
e9a9e8d1af
commit
a7420267a6
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -65,7 +65,7 @@ namespace
|
||||
};
|
||||
|
||||
template <typename T, typename TOverload>
|
||||
void Function(T value, TOverload& ol)
|
||||
void Function(T value, TOverload&& ol)
|
||||
{
|
||||
ol(value);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user