Donc je fais un peu de devoirs où je dois écrire ma propre séquence entière en C++ 11 et y écrire quelques fonctions (print, concat, tri, etc.) mais j'ai un peu de mal à comprendre comment j'écrirais ces choses.Impression d'une séquence d'entiers en temps de compilation en C++ 11
template<typename T, typename Comp = std::less<int>>
struct Facility{
template<T ... Nums>
struct List{
struct Element<T ... nums>{};
template<unsigned num, T val, T ... rest>
struct Element{
unsigned index = num;
T value = val;
Element<index-1, rest...> others;
};
template<unsigned num, T val, T ... rest>
struct Element<0, val>{
unsigned index = 0;
T value = val;
};
static constexpr Element<sizeof...(Nums)-1,Nums...> elem = {};
static void Print()
{
// Prints out the list
}
};
};
using IntList = typename Facility<int>::List<intlist...>;
int main()
{
using List1 = IntList<1, 2, 3>;
List1::print()
}
Je voudrais juste savoir si je suis sur la bonne voie alors je ne me travaille pas dans une impasse. Je ne suis pas sûr à 100% sur le static print()
et le membre static constexpr
dans List
, bien que je ne peux pas penser à aucun autre moyen de le faire fonctionner.
L'installation et la liste ont été fournies dans le dossier d'affectation. Des fonctions comme le tri, etc. doivent être fournies dans Facility, tandis que Print est la seule fonction dans List. J'ai réalisé que beaucoup de mon problème venait de penser que la liste était un objet réel, alors que j'aurais dû y penser comme un ensemble de structures créées par méta-fonctions chaînées. Je pense que je devrais aller bien d'ici. Merci beaucoup! – ozma