Umfang eines Template-Parameter-Packs
Content |
Mit dem Operator sizeof... können Sie den Umfang eines Template-Parameter-Packs ermitteln. Das Resultat ist (wie bei sizeof) vom Typ std::size_t aus <cstdlib>. Folgende Template-Funktion liefert die Zahl ihrer Parameter zurück:
template<typename... Args> std::size_t count(Args... args) { return sizeof...(Args); }
Genauso wäre auch sizeof...(args) zulässig gewesen (mit dem gleichen Resultat).
Aufgabe
Entwickeln Sie eine Variante update_with_index, die dem Funktionsobjekt die Gesamtzahl der einzulesenden Objekte und den Index für das aktuelle Objekt mitgibt. So könnten Sie dann die einzelnen Variablen einlesen mit Angabe des jeweiligen Index:
std::string s; double x; int i; update_with_index([](std::size_t size, std::size_t index, auto& var) { std::cout << "Variable " << index+1 << "/" << size << ": "; std::cin >> var; }, s, x, i);