Heute habe ich versucht, eine Vorlagenklasse an einen Vorlagenparameter zu übergeben. Meine Vorlagenklasse std::map
hat vier Vorlagenparameter, aber die letzten beiden sind Standardparameter.Vorlagenklasse als Vorlagenparameter Standardparameter
konnte ich den folgenden Code zu kompilieren:
#include <map>
template<typename K, typename V, typename P, typename A,
template<typename Key, typename Value, typename Pr= P, typename All=A> typename C>
struct Map
{
C<K,V,P,A> key;
};
int main(int argc, char**args) {
// That is so annoying!!!
Map<std::string, int, std::less<std::string>, std::map<std::string, int>::allocator_type, std::map> t;
return 0;
}
Leider, ich will nicht die beiden letzten Parameter die ganze Zeit passieren. Das ist wirklich zu viel Schreiben. Wie kann ich hier einige Standard-Template-Argumente verwenden?
Vielen Dank! Ich war mir dieser neuen variadischen Vorlagen nicht bewusst. Elegant und kurz. – Aleph0