/*Orion Lawlor's Simple C++ Examples, olawlor@acm.org
Shows how to overload a class cast operator.
*/
#include <iostream>

class foo {
private:
	double val;
public:
	foo(double x):val(x) {}
	
	//Cast-to-double operator
	operator double &() {
		return val;
	}
};

int main()
{
	foo f(3.7);
	double d=f;
	std::cout<<"f got cast to "<<d<<std::endl;
	return 0;
}
/*<@>
<@> ******** Program output: ********
<@> f got cast to 3.7
<@> */
