mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Fix etl::tuple template signature error in pair assignment operator (#1265)
* Fix etl::tuple template signature error in pair assignment operator * Remove AppVeyor build status badge Removed AppVeyor build status badge from README. * Update README.md * Update etl::tuple to explicitly use etl::pair or std::pair in assignment operator * Added tests for etl::tuple assignment from pair --------- Co-authored-by: Bryton Flecker <bflecker@swe.com> Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
This commit is contained in:
parent
b82bf3b79d
commit
f9dc1caa94
@ -1,5 +1,4 @@
|
||||
Embedded Template Library (ETL)
|
||||
-------------------------
|
||||
#  Embedded Template Library (ETL)
|
||||
|
||||

|
||||
[](https://img.shields.io/github/release-date/jwellbelove/etl?color=%231182c3)
|
||||
@ -10,7 +9,6 @@ Embedded Template Library (ETL)
|
||||

|
||||
|
||||

|
||||
[](https://ci.appveyor.com/project/jwellbelove/etl/branch/master)
|
||||
|
||||

|
||||

|
||||
|
||||
@ -559,9 +559,9 @@ namespace etl
|
||||
//*********************************
|
||||
/// Assign from lvalue pair tuple type.
|
||||
//*********************************
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>, etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>(), etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
ETL_CONSTEXPR14
|
||||
tuple& operator =(pair<U1, U2>& p)
|
||||
tuple& operator =(ETL_OR_STD::pair<U1, U2>& p)
|
||||
{
|
||||
get_value() = p.first;
|
||||
get_base().get_value() = p.second;
|
||||
@ -572,9 +572,9 @@ namespace etl
|
||||
//*********************************
|
||||
/// Assign from const lvalue pair tuple type.
|
||||
//*********************************
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>, etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>(), etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
ETL_CONSTEXPR14
|
||||
tuple& operator =(const pair<U1, U2>& p)
|
||||
tuple& operator =(const ETL_OR_STD::pair<U1, U2>& p)
|
||||
{
|
||||
get_value() = p.first;
|
||||
get_base().get_value() = p.second;
|
||||
@ -585,9 +585,9 @@ namespace etl
|
||||
//*********************************
|
||||
/// Assign from rvalue pair tuple type.
|
||||
//*********************************
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>, etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>(), etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
ETL_CONSTEXPR14
|
||||
tuple& operator =(pair<U1, U2>&& p)
|
||||
tuple& operator =(ETL_OR_STD::pair<U1, U2>&& p)
|
||||
{
|
||||
get_value() = etl::forward<U1>(p.first);
|
||||
get_base().get_value() = etl::forward<U2>(p.second);
|
||||
@ -598,12 +598,12 @@ namespace etl
|
||||
//*********************************
|
||||
/// Assign from const rvalue pair tuple type.
|
||||
//*********************************
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>, etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
template <typename U1, typename U2, size_t NTypes = number_of_types<THead, TTail...>(), etl::enable_if_t<NTypes == 2U, int> = 0>
|
||||
ETL_CONSTEXPR14
|
||||
tuple& operator =(const pair<U1, U2>&& p)
|
||||
tuple& operator =(const ETL_OR_STD::pair<U1, U2>&& p)
|
||||
{
|
||||
get_value() = etl::forward<U1>(p.first);
|
||||
get_base().get_value() = etl::forward<U2>(p.second);
|
||||
get_value() = p.first;
|
||||
get_base().get_value() = p.second;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -756,5 +756,67 @@ namespace
|
||||
CHECK_EQUAL(etl::get<2>(tp), s);
|
||||
}
|
||||
#endif
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_lvalue_pair)
|
||||
{
|
||||
ETL_OR_STD::pair<int, Data> p(1, Data("2"));
|
||||
|
||||
etl::tuple<int, Data> tp(0, Data(""));
|
||||
|
||||
tp = p;
|
||||
|
||||
int i = etl::get<0>(tp);
|
||||
Data d = etl::get<1>(tp);
|
||||
|
||||
CHECK_EQUAL(1, i);
|
||||
CHECK_EQUAL(std::string("2"), d.value);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_const_lvalue_pair)
|
||||
{
|
||||
const ETL_OR_STD::pair<int, Data> p(1, Data("2"));
|
||||
|
||||
etl::tuple<int, Data> tp(0, Data(""));
|
||||
|
||||
tp = p;
|
||||
|
||||
int i = etl::get<0>(tp);
|
||||
Data d = etl::get<1>(tp);
|
||||
|
||||
CHECK_EQUAL(1, i);
|
||||
CHECK_EQUAL(std::string("2"), d.value);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_rvalue_pair)
|
||||
{
|
||||
etl::tuple<int, Data> tp(0, Data(""));
|
||||
|
||||
tp = ETL_OR_STD::pair<int, Data>(1, Data("2"));
|
||||
|
||||
int i = etl::get<0>(tp);
|
||||
Data d = etl::get<1>(tp);
|
||||
|
||||
CHECK_EQUAL(1, i);
|
||||
CHECK_EQUAL(std::string("2"), d.value);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_const_rvalue_pair)
|
||||
{
|
||||
const ETL_OR_STD::pair<int, Data> p(1, Data("2"));
|
||||
|
||||
etl::tuple<int, Data> tp(0, Data(""));
|
||||
|
||||
tp = static_cast<const ETL_OR_STD::pair<int, Data>&&>(p);
|
||||
|
||||
int i = etl::get<0>(tp);
|
||||
Data d = etl::get<1>(tp);
|
||||
|
||||
CHECK_EQUAL(1, i);
|
||||
CHECK_EQUAL(std::string("2"), d.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user