#include <cstddef>
#include <iostream>

struct Pig {
	Pig() {std::cout << this << " oinks!" << std::endl;}
	~Pig() {std::cout << this << " is bacon!" << std::endl;}
};

class PigFarm {
public:
	explicit PigFarm(std::size_t n): sp(new Pig[n]) {throw "FARM FIRE!";}
	~PigFarm() {delete[] sp;}
private:
	Pig *sp;
};

int main()
{
	try {
		PigFarm pf(4);
	}
	catch (const char *pc) {
		std::cerr << pc << std::endl;
	}
}
