Я придумал эту программу, чтобы найти минимальный набор вложенных typedefs:
#include <iostream>
#include <iterator>
#include <vector>
#include <boost/foreach.hpp>
#include <boost/range/algorithm/sort.hpp>
struct Foo
{
typedef std::vector<int> Vec;
typedef Vec::const_reference const_reference;
typedef Vec::iterator iterator;
typedef Vec::const_iterator const_iterator;
iterator begin() {return vec.begin();}
iterator end() {return vec.end();}
const_iterator begin() const {return vec.begin();}
const_iterator end() const {return vec.end();}
void push_back(const int& n) {vec.push_back(n);}
Vec vec;
};
int main()
{
Foo f;
std::back_insert_iterator<Foo> it(f);
*it = 2; ++it; *it = 1; ++it;
boost::sort(f);
BOOST_FOREACH(int x, f)
{
std::cout << x << " ";
}
}
Как видите, по крайней мере const_reference
, iterator
и const_iterator
необходимы.
Я должен упомянуть, что я скомпилировал это с gcc 4.4.3 и boost 1.43.