1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#include <QList>
#include <QQueue>
#include <QStack>
#include <QLinkedList>
#include <QSet>
#include <QString>
#include <QDebug>
struct A {
explicit A(const QString& _a = QString(), const QString& _b = QString(),
int _c = -1, int _d = -1)
: a(_a), b(_b), c(_c), d(_d)
{}
bool operator==(const A& other) const
{
return a == other.a && b == other.b && c == other.c && d == other.d;
}
QString a;
QString b;
int c;
int d;
};
size_t qHash(const A& a)
{
return qHash(a.a) + qHash(a.b);
}
template<template <typename> class Container>
void doStuff()
{
Container<int> intList;
intList << 10 << 20;
intList << 30;
Container<QString> stringList;
stringList << "a" << "bc";
stringList << "d";
Container<A> structList;
structList << A("a", "b", 100, -200);
structList << A();
Container<int*> pointerList;
pointerList << new int(1) << new int(2);
pointerList << new int(3);
qDeleteAll(pointerList);
Container<QPair<int, int> > pairList;
pairList << QPair<int, int>(1, 2) << qMakePair(2, 3);
pairList << qMakePair(4, 5);
// don't leave context
int i = 0;
Q_UNUSED(i);
}
int main()
{
doStuff<QList>();
doStuff<QQueue>();
doStuff<QStack>();
doStuff<QLinkedList>();
doStuff<QSet>();
return 0;
}
|