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);