Ich versuche, einen Alias für eine Vorlage zu erstellen, anstatt einen Typ und ich kann die Syntax nicht finden, um es zu tun. Unten ist ein Beispiel, das mein Problem zeigt. Meine Vermutung ist, dass dies nur etwas ist, das nicht gemacht werden kann, aber ich hoffe, dass jemand mir das Gegenteil beweisen kann. Wenn es nicht möglich ist, gibt es einen Grund dafür, dass es keinen Sinn macht, oder wird es einfach nicht implementiert?C++ Alias zu Vorlage?
template <class S>
class Down;
template <class S>
class Up {
template <class S1>
using Opposite = Down<S1>;
};
template <class S>
class Down {
template <class S1>
using Opposite = Up<S1>;
};
template <template <typename> class Direction>
void oneDirection() {
//Call another function here that uses the template argument as a template
}
template <template <typename> class Direction>
void bothDirections() {
oneDirection<Direction>();
oneDirection<Direction::Opposite>(); //This doesn't compile
}
int main() {
bothDirections<Up>();
}
Sie vermissen 'typename' in der Zeile, die Sie als nicht kompilierend markiert haben. – KyleKnoepfel
@KyleKnoepfel Wie geschrieben, ist "Opposite" auch eine Vorlage, die ein Template-Argument benötigt, daher kann das Problem durch das Hinzufügen von 'type' nicht behoben werden. –