Gibt es eine Vorlage für Typeigenschaften, die den Basistyp eines bestimmten Typs zurückgibt. Mit Basistyp meine ich den Typ, bei dem alle Wertmodifikatoren, const, volatile usw. entfernt sind. Zum Beispiel mit einer hypothetischen Merkmalfunktion:
%Vor% Ich kenne remove_const
und remove_reference
und verwende sie momentan nur in Kombination. Ich frage mich, ob es jedoch bereits eine solche Eigenschaft gibt und vielleicht, wenn es einen richtigen Namen für das gibt, was ich meine?
Ich würde wahrscheinlich einen Typalias definieren wie:
%Vor% Beachten Sie, dass hier R. Martinho Fernandes schlägt den Namen Unqualified
für einen solchen Alias vor.
Die Standardart std::decay
funktioniert auf der anderen Seite genauso wie oben < em> und etwas mehr für Array-und Funktionstypen, die oder nicht sein kann, was Sie wollen.
Offensichtlich hängt es davon ab, was genau Sie vom Typ entfernen möchten. std :: cease könnte das sein, nach was Sie suchen (entfernt Verweise, const/volatile
, verfällt Array Zeiger und Funktion zum Funktionszeiger). Wenn Sie nicht möchten, dass das Array Zeiger und Funktion zum Verfall von Funktionspointern verwendet, müssen Sie bei std::remove_reference
und std::remove_cv
bleiben (entfernt const
und volatile
). Natürlich könntest du die beiden zu deinem eigenen Typtrait kombinieren, um es einfacher zu machen.