Je veux écrire un modèle variadique ou des expressions const qui 1) exécute un modèle de foncteur N
fois et 2) accumule le résultat. J'ai écrit un petit exemple qui échoue la compilation dès que je déplace la fonction qui est exécutée dans un foncteur de modèle. J'ai l'impression d'être proche de la solution, mais peut-être que je me trompe.Modèle variadique simple (récursif) Fonction "accumulate_for" avec problèmes de compilation
#include <iostream>
#include <string>
struct F {
template <int id>
static int run(int val) {
return id * val;
}
};
template<unsigned int n>
struct accumulate_for
{
template <class Funct>
static int get(int val) {
return
(
accumulate_for<n-1>::get(val)
+
Funct::run<n>(val)
);
}
};
template<>
struct accumulate_for<0>
{
template <class Funct>
static int get(int val) {
return 0;
}
};
int main()
{
std::cout << accumulate_for<3>::get<F>(1) << std::endl;
}
[alternatif avec std :: index_sequence] (http://coliru.stacked-crooked.com/ a/a9946dfd1a8890ef) – Jarod42