#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
}