template <typename T>
struct Identity
{
typedef T type;
};
template <typename T> void assign(T *a, typename Identity<T>::type b) { *a = b; }
int main() {
float i;
assign(&i, 2);
}
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBJZGVudGl0eQp7CiAgICB0eXBlZGVmIFQgdHlwZTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFzc2lnbihUICphLCB0eXBlbmFtZSBJZGVudGl0eTxUPjo6dHlwZSBiKSB7ICphID0gYjsgfQoKaW50IG1haW4oKSB7CiAgICBmbG9hdCBpOwogICAgYXNzaWduKCZpLCAyKTsKfQ==