Test auf Instanz von Template
-
Ein naheliegender Test für "Ist T eine Instanz von Klassentemplate X" ist ja, jetzt einfach von SO kopiert:
template<template<typename...> class X, typename T> struct instantiation_of : public std::false_type {}; template<template<typename...> class X, typename... Y> struct instantiation_of<X, X<Y...>> : public std::true_type {};
Damit kann man unter Umständen Funktionen für bestimmte Template-Argumente einfacher gestalten, weil man nicht die komplette Parameter-Liste wiederholen muss. Aber das funktioniert ja nicht für alle Templates...
Gibt's denn irgendwelche Bestrebungen, dass Typ- und Integrale Parameter irgendwie in irgendeiner Form gleich behandelt werden können, sodass man solch ein Muster eben auch für wirklich alle Klassentemplates verwenden kann?
-
decimad schrieb:
Ein naheliegender Test für "Ist T eine Instanz von Gibt's denn irgendwelche Bestrebungen, dass Typ- und Integrale Parameter irgendwie in irgendeiner Form gleich behandelt werden können, sodass man solch ein Muster eben auch für wirklich alle Klassentemplates verwenden kann?
Interessante Frage Dann müssten aber auch templates als mögliche template parameter dazu kommen. Dann wären könnten wir endlich beliebig zwischen den Meta-Ebenen wechseln Mein Vorschlag:
template<template<thingy...> class X, thingy... Y> struct instantiation_of<X, X<Y...>> : public std::true_type {};
Das würde aber dazu führen, dass ein thingy auch ein gültiger template Parameter sein müsste.