added CREATE_FROM_IL
This commit is contained in:
parent
46bf398a78
commit
297c42b176
|
|
@ -247,9 +247,14 @@ inline std::ostream& operator<<(std::ostream& os, ReturnCode rc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <template<typename T, std::initializer_list<T> il> typename Callee>
|
|
||||||
constexpr void expand_from_ilist() {
|
|
||||||
return Callee { };
|
#define CREATE_FROM_IL(type, il, len) \
|
||||||
}
|
([]<std::size_t N, typename ArgType>(std::initializer_list<ArgType> args) { \
|
||||||
|
auto creator = [&args] <std::size_t ..._idx> (std::index_sequence<_idx...>) { \
|
||||||
|
return type { (*std::next(std::begin(args), _idx))... }; \
|
||||||
|
}; \
|
||||||
|
return creator(std::make_index_sequence<N>()); \
|
||||||
|
}).operator()<len>(il)
|
||||||
|
|
||||||
#endif //CONST_CONTAINER_TEST_HPP_
|
#endif //CONST_CONTAINER_TEST_HPP_
|
||||||
|
|
|
||||||
|
|
@ -272,8 +272,8 @@ constexpr test_suite tests = define_tests("Tests")
|
||||||
ASSERT_RANGE_VEC_EQ(vi4, test_defs::get<int>::arr_len<2>(), test_defs::get<int>::capacity<2>(), int());
|
ASSERT_RANGE_VEC_EQ(vi4, test_defs::get<int>::arr_len<2>(), test_defs::get<int>::capacity<2>(), int());
|
||||||
|
|
||||||
|
|
||||||
cc::const_vector vc1(test_defs::get<char>::i_list<1>);
|
auto vc1 = CREATE_FROM_IL(cc::const_vector, test_defs::get<char>::i_list<1>, test_defs::get<char>::il_len<1>());
|
||||||
cc::const_vector vc2(test_defs::get<char>::i_list<2>);
|
auto vc2 = CREATE_FROM_IL(cc::const_vector, test_defs::get<char>::i_list<2>, test_defs::get<char>::il_len<2>());
|
||||||
cc::const_vector<char, test_defs::get<int>::capacity<1>()> vc3(test_defs::get<char>::i_list<1>);
|
cc::const_vector<char, test_defs::get<int>::capacity<1>()> vc3(test_defs::get<char>::i_list<1>);
|
||||||
cc::const_vector<char, test_defs::get<int>::capacity<2>()> vc4(test_defs::get<char>::i_list<2>);
|
cc::const_vector<char, test_defs::get<int>::capacity<2>()> vc4(test_defs::get<char>::i_list<2>);
|
||||||
|
|
||||||
|
|
@ -293,8 +293,8 @@ constexpr test_suite tests = define_tests("Tests")
|
||||||
ASSERT_RANGE_VEC_EQ(vc4, test_defs::get<char>::arr_len<2>(), test_defs::get<int>::capacity<2>(), char());
|
ASSERT_RANGE_VEC_EQ(vc4, test_defs::get<char>::arr_len<2>(), test_defs::get<int>::capacity<2>(), char());
|
||||||
|
|
||||||
|
|
||||||
cc::const_vector vs1(test_defs::get<const char *>::i_list<1>);
|
auto vs1 = CREATE_FROM_IL(cc::const_vector, test_defs::get<const char*>::i_list<1>, test_defs::get<const char*>::il_len<1>());
|
||||||
cc::const_vector vs2(test_defs::get<const char *>::i_list<2>);
|
auto vs2 = CREATE_FROM_IL(cc::const_vector, test_defs::get<const char*>::i_list<2>, test_defs::get<const char*>::il_len<2>());
|
||||||
cc::const_vector<const char *, test_defs::get<int>::capacity<1>()> vs3(test_defs::get<const char *>::i_list<1>);
|
cc::const_vector<const char *, test_defs::get<int>::capacity<1>()> vs3(test_defs::get<const char *>::i_list<1>);
|
||||||
cc::const_vector<const char *, test_defs::get<int>::capacity<2>()> vs4(test_defs::get<const char *>::i_list<2>);
|
cc::const_vector<const char *, test_defs::get<int>::capacity<2>()> vs4(test_defs::get<const char *>::i_list<2>);
|
||||||
|
|
||||||
|
|
@ -312,8 +312,8 @@ constexpr test_suite tests = define_tests("Tests")
|
||||||
ASSERT_RANGE_VEC_ARR_EQ(vs4, 0, test_defs::get<const char *>::arr_len<2>(), test_defs::get<const char *>::i_list<2>);
|
ASSERT_RANGE_VEC_ARR_EQ(vs4, 0, test_defs::get<const char *>::arr_len<2>(), test_defs::get<const char *>::i_list<2>);
|
||||||
|
|
||||||
|
|
||||||
cc::const_vector vo1(test_defs::get<TestStruct>::i_list<1>);
|
auto vo1 = CREATE_FROM_IL(cc::const_vector, test_defs::get<TestStruct>::i_list<1>, test_defs::get<TestStruct>::il_len<1>());
|
||||||
cc::const_vector vo2(test_defs::get<TestStruct>::i_list<2>);
|
auto vo2 = CREATE_FROM_IL(cc::const_vector, test_defs::get<TestStruct>::i_list<2>, test_defs::get<TestStruct>::il_len<2>());
|
||||||
cc::const_vector<TestStruct, test_defs::get<int>::capacity<1>()> vo3(test_defs::get<TestStruct>::i_list<1>);
|
cc::const_vector<TestStruct, test_defs::get<int>::capacity<1>()> vo3(test_defs::get<TestStruct>::i_list<1>);
|
||||||
cc::const_vector<TestStruct, test_defs::get<int>::capacity<2>()> vo4(test_defs::get<TestStruct>::i_list<2>);
|
cc::const_vector<TestStruct, test_defs::get<int>::capacity<2>()> vo4(test_defs::get<TestStruct>::i_list<2>);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ struct test_defs {
|
||||||
template<std::size_t nr>
|
template<std::size_t nr>
|
||||||
static consteval std::size_t arr_len();
|
static consteval std::size_t arr_len();
|
||||||
|
|
||||||
|
template<std::size_t nr>
|
||||||
|
static consteval std::size_t il_len();
|
||||||
|
|
||||||
template<std::size_t nr>
|
template<std::size_t nr>
|
||||||
static consteval std::size_t capacity();
|
static consteval std::size_t capacity();
|
||||||
|
|
||||||
|
|
@ -117,6 +120,9 @@ template<std::size_t nr>
|
||||||
consteval std::size_t test_defs::get<T>::arr_len() { return C_ARR_LEN(arr<nr>); }
|
consteval std::size_t test_defs::get<T>::arr_len() { return C_ARR_LEN(arr<nr>); }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
template<std::size_t nr>
|
template<std::size_t nr>
|
||||||
|
consteval std::size_t test_defs::get<T>::il_len() { return i_list<nr>.size(); }
|
||||||
|
template<typename T>
|
||||||
|
template<std::size_t nr>
|
||||||
consteval std::size_t test_defs::get<T>::capacity() { return 0; }
|
consteval std::size_t test_defs::get<T>::capacity() { return 0; }
|
||||||
template<typename T>
|
template<typename T>
|
||||||
template<std::size_t nr>
|
template<std::size_t nr>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue