#include <iostream>
template <class in>
auto foo(in*);
template <>
auto foo<size_t>(size_t* i)
{
return reinterpret_cast<double*>(i);
}
int main() {
size_t i = 0;
std::cout << *foo(&i) << std::endl; // ok
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIGluPgphdXRvIGZvbyhpbiopOwoKdGVtcGxhdGUgPD4KYXV0byBmb288c2l6ZV90PihzaXplX3QqIGkpCnsKCXJldHVybiByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KGkpOwp9CgppbnQgbWFpbigpIHsKCQoJc2l6ZV90IGkgPSAwOwoJCgkgc3RkOjpjb3V0IDw8ICpmb28oJmkpIDw8IHN0ZDo6ZW5kbDsgLy8gb2sKfQ==