Ponieważ nie mogłem znaleźć takiej funkcji (niepoprawnie?), Próbuję wykonać funkcję kompilacji (constexpr
), która pobiera std::array<T,n> arr
i T t
i zwraca nową std::array<T,n+1>
z t
dodanym na końcu arr
. Zacząłem od czegoś takiego:Dołącz do std :: array
template <typename T, int n>
constexpr std::array<T,n+1> append(std::array<T,n> a, T t);
template <typename T>
constexpr std::array<T,1> append(std::array<T,0> a, T t)
{
return std::array<T,1>{t};
}
template <typename T>
constexpr std::array<T,2> append(std::array<T,1> a, T t)
{
return std::array<T,2>{a[0], t};
}
Tutaj utknęłam. Potrzebuję sposobu na rozwinięcie a
w pierwszych miejscach n
na liście inicjalizacyjnej, a następnie dodanie końcówki t
. Czy to jest możliwe? Czy jest inny sposób na zrobienie tego?
Pokonaj mnie kilka sekund :) Oto awans – StoryTeller
Wow, czysta magia dla mnie! C++ w ubiegłym roku znacznie się rozwinęło. Dzięki! – kalj
Warto dodać, że dla C++ 11 dostępne są wydajne implementacje 'integer_sequence' np. [ten] (https://gitlab.com/redistd/integer_seq/blob/master/integer_seq.h), ponieważ niestety nie wychodzi z pudełka. –