Variadic Templates benutzen, aber nur die Typen sind gegeben
-
Folgendes Problem: Ich will mit Variadic Templates arbeiten unter der Einschränkung, dass nur die Typen aber keine Values dazu gegeben sind. Als C++ Code versteht man vielleicht besser was ich will.
//Nicht kompilierendes Beispiel struct Blob { static int XYZ() { return 1; } }; std::uint32_t getXYZs() { return 0; } template<typename T, typename... Args> std::uint32_t getXYZs() { return T::XYZ() + getXYZs<Args...>(); } int main(){ getXYZs<Blob, Blob, Blob, Blob, Blob>(); }
Zumindest Visual C++ 2015 akzeptiert das (wohl auch zurecht) nicht. Wie kann man erreichen was ich will?
-
template<typename T> std::uint32_t getXYZs() { return T::XYZ(); } template<typename T1, typename T2, typename... Args> std::uint32_t getXYZs() { return T1::XYZ() + getXYZs<T2, Args...>(); }
Schönheitsfehler: Geht nicht mit 0 Argumenten. Wäre das wichtig?
-
Ah Danke, das passt so perfekt.