J'ai eu une fonction (lambda) et beaucoup de foncteurs passés en pack d'arguments variadiques dans une troisième fonction. La signature ressembleAppel d'une fonction avec un paramètre d'un pack de foncteurs en template variadique
template<typename F, typename... G>
ret_t call(F&& func, G&&... getters);
et F
a autant comme argument que le nombre de getters
donné.
Maintenant, je dois appeler func
avec la valeur de retour de getter
appelée par rapport à une constante codée en dur (constexpr) déterminée autrement. Donc, le code sans matrice pourrait ressembler
{
return func(getters_1(0), getters_2(0), getters_3(0) /* , ... */);
}
Bien sûr, je veux automatiser le processus avec le modèle métaprogrammation.
Je veux éviter un tableau temporaire ou un conteneur intermédiaire quelconque. (Cela ne vise pas ce générique, je connais le type de retour des getters.) Je veux qu'il soit transmis à la fonction aussi directement que possible afin de permettre l'optimisation et d'éviter le gaspillage de mémoire.
Je pourrais avoir enveloppé F avec de nombreux niveaux de fermeture de lambda, chacun y ajoute un paramètre, et espère le meilleur du compilateur, mais de toute façon je demande des façons meilleures et plus claires de le faire.
C++ 11, C++ 14 ou 17 C++? – max66
@ max66, j'utilise g ++ 7.2 donc C++ 17. – YiFei
@YiFei La constante est-elle toujours la même? – Rakete1111