#include <algorithm>
#include <iostream>
#include <memory>
#include <vector>

class MakeIntPtr {
public:
  explicit MakeIntPtr(int v) : value_(v) {}
  operator std::unique_ptr<int>() {
  	return std::unique_ptr<int>(new int(value_));
  }
  MakeIntPtr& operator++() { ++value_; return *this; }
private:
  int value_;
};

int main() {
  std::vector<std::unique_ptr<int>> nums(98);
  std::iota(begin(nums), end(nums), MakeIntPtr(3));

  std::cout << *nums[0] << ' ' << *nums[1] << ' ' << *nums[2];
  return 0;
}
