diff --git a/include/etl/overload.h b/include/etl/overload.h index b2ab3333..259aebeb 100644 --- a/include/etl/overload.h +++ b/include/etl/overload.h @@ -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 - constexpr auto make_overload(TOverloads&&... overloads) - { - return overload{ etl::forward(overloads)... }; - } - //************************************************************************* /// Template deduction guide. //************************************************************************* @@ -65,6 +56,9 @@ namespace etl #else + //************************************************************************* + /// Variadic template definition of overload for C++14. + //************************************************************************* template struct overload : TFirst, overload { @@ -78,16 +72,17 @@ namespace etl using TFirst::operator(); }; +#endif + //************************************************************************* /// Make an overload. //************************************************************************* - template - constexpr auto make_overload(TOthers&&... overloads) + template + constexpr overload make_overload(TOverloads&&... overloads) { - return overload{ etl::forward(overloads)... }; + return overload{ etl::forward(overloads)... }; } -#endif #endif } diff --git a/test/etl_profile.h b/test/etl_profile.h index 710bb5a9..13ff44c3 100644 --- a/test/etl_profile.h +++ b/test/etl_profile.h @@ -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 diff --git a/test/test_overload.cpp b/test/test_overload.cpp index 31d8389f..a9f50369 100644 --- a/test/test_overload.cpp +++ b/test/test_overload.cpp @@ -65,7 +65,7 @@ namespace }; template - void Function(T value, TOverload& ol) + void Function(T value, TOverload&& ol) { ol(value); } diff --git a/test/test_variant_new.cpp b/test/test_variant_new.cpp index 5ce23d0a..a1b421c7 100644 --- a/test/test_variant_new.cpp +++ b/test/test_variant_new.cpp @@ -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;