#include <iostream>
#include <exception>
#include <stdexcept>
#include <string>
#include <vector>
#include <utility>
 
struct Foo {
	Foo(std::string t):text(t){}
	//destructor deleted
    
    std::string text;
};

int main()
{
	std::vector<Foo> v;
    
	v.push_back(Foo("foo 1"));
	v.push_back(Foo("foo 2"));
	v.push_back(Foo("foo 3"));
  
	for(auto& foo : v){
		std::cout << "foo.text: '" << foo.text << "'\n";
	}
  
	Foo fooBack = std::move(v.back());
  
	std::cout << "fooBack.text: '" << fooBack.text << "'\n";
  
	for(auto& foo : v){
    	std::cout << "foo.text: '" << foo.text << "'\n";
	}

	return 0;
}