ich eine Funktion schreibe, wo ich das Kopieren bin Keys von map
, set
, unordered_map
, unordered_set
zu einem vector
, jetzt möchte ich eine Kompilierung assert hinzufügen klare Fehler zu erhalten, wenn einige versuchen, eine vector
, list
in dieser Funktion zu übergeben.Static assert Karte zu überprüfen, Satz, unordered_map, unordered_set
template <typename container>
auto CopyKeyToVector(conatiner c)
{
//static assert to check c is map, unordered map only?
}
Jede Idee, wie wir dass- als map
, unordered_map
selbst
http://stackoverflow.com/a/31105859/3953764 –
Wenn Sie 'c' verwenden, da es sich um assoziative Container handelt, d. H. Nur eine Elementfunktion aufrufen, die nur in z. 'std :: map' oder' std :: unordered_map', dann erhalten Sie einen Compilerfehler, wenn der Aufrufer etwas übergibt, das diese Memberfunktion nicht besitzt. –