Ich habe einige variadische Template-Methode, die wie folgt aussieht:C++ Variadische Template-Methode Spezialisierung
template<typename ... Args>
void Invoke(const char* funcName, Args ... args) const;
template<typename ... Args>
void Invoke(const char* funcName, Args ... args) const
{
SPrimitive params[] = { args ... };
SomeOtherInvoke(funcName, params, sizeof ... (Args));
}
SPrimitive hier - nur eine einfache Struktur mit einem Konstruktor für jeden primitiven Typ.
Ich möchte eine weitere Invoke-Definition für einen komplexen Typ vornehmen. Und hier ist meine Frage: Ist es möglich, variadic Vorlage Methode Spezialisierung in C++ 11/14 machen? ich so etwas wie dies bedeuten (der Einfachheit halber lässt mein Typ int):
template<int ... Args>
void Invoke(const char* funcName, Args ... args)
{
int params[] = { args ... };
SomeComplexInvoke(funcName, params, sizeof ... (Args));
}
Hier möchte ich eine Spezialisierung, die alle Parameter Zählung vom Typ int nimmt, so kann ich es einfach so nennen:
Invoke("method", 2, 4 ,9);
Nicht mit Spezialisierung, aber Sie können mit Überlastung und SFINAE. – Jarod42
aber 'std :: initializer_list' scheint passender (mit 'Invoke (" Methode "{2, 4, 9})' Syntax). –
Jarod42