#include <iostream>

class Foo
{
	int whatever;
public:
	Foo():whatever(3) {}
    Foo(Foo const& other):whatever(other.whatever) { /* assume valid implementation */ }

    Foo& operator= (Foo other)
    {
    	std::cout << "run" << std::endl;
        std::swap(*this, other);
        return *this;
    }
};

int main() {
	Foo f0, f1;
	f0 = f1;
}