ich eine variadische Vorlage erstellen können, die nur Zeiger akzeptiert:Erstellen variadische nur Referenz oder Zeiger zu akzeptieren
template<typename ... Types>
void F(Types *... args);
Oder eine variadische Vorlage, die nur Verweise akzeptiert:
template<typename ... Types>
void F(Types &... args);
Wie ich eine Vorlage erstellen das akzeptiert entweder nicht-const Referenz oder Zeiger?
Zum Beispiel
int a, b, c;
F(a, &b); // => F<int &, int *>
F(a, 3); // Error, 3 not pointer and cannot bind to non const-reference
Hinweis: Die Referenzversion könnte ok erscheinen, weil es zu Zeiger Referenzen binden kann, aber es ist nicht, da es in Args
für jeden Typ die Anforderungen überprüfen binden nicht einfach zu int * const
Ich denke, Sie generische Typen 'annehmen sollten ...' und dann prüfen, ihr Sein Zeiger oder Referenz durch so etwas wie 'std :: is_pointer' –
@PaoloM: Das erste Beispiel dann nicht funktionieren wird. – Dani