I was bored and came up with such hack (pseudocode):
1 struct proxy { 2 operator int(); // int function 3 operator double(); // double function 4
No, and it's not a hack. It's the whole point of operator overloading. As long as your overloads serve a purpose, then why not?