#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using std::list;
using std::cout;
using std::endl;
class IntGen {
private:
int value;
public:
IntGen(int firstValue) : value(firstValue) {
}
int operator() () {
return value++;
}
};
template <typename T>
inline void print(const T &data)
{
for (const auto &element : data) {
cout << element << ' ';
}
cout << endl;
}
int main()
{
list<int> lst;
generate_n(back_inserter(lst), 12, IntGen(1));
print(lst);
}
/*
run:
1 2 3 4 5 6 7 8 9 10 11 12
*/