#include <vector>
#include <iostream>
#include <tchar.h> //_tmain
#include <conio.h> //_getch

using std::vector;
using std::cout;
using std::endl;
using std::swap;

#include >>467

template<class T> class move_val {
  T v;
public:
  move_val(){}
  move_val(move_val<T>& o){ swap(v,*o); }
  move_val(T& o){ swap(v,o); }
  void operator=(move_val<T>& o){ swap(v,*o); }
  void operator=(T& o){ swap(v,o); }
  T& operator*(){ return v; }
};
move_val<vector<BigSizeClass> > f1(){
  vector<BigSizeClass> v;
  v.reserve(2);
  v.push_back(BigSizeClass(0));
  v.push_back(BigSizeClass(1));
  cout <<"--push end"<< endl;
  return v;
}