I was bored and came up with such hack (pseudocode):
1 struct proxy { 2 operator int(); // int function 3 operator double(); // double function 4
Actually it seems you have reinvented a Variant type. Just take a look at all *variant types that are present in many frameworks, eg.: MS uses VARIANT, Qt has QVariant.