#include <iostream>
#include <complex>
using namespace std;

template<typename T, decltype((T)0/(T)0)* v = nullptr>
T half(T arg)
{
	return arg/(T)2;
}

string half(string arg)
{
	return arg.substr(0, arg.length()/2);
}

int main()
{
	cout << half(2) << endl;
	cout << half(0.5) << endl;
	cout << half(complex<float>(0, 1)) << endl;
	cout << half(string("trivial")) << endl;
	return 0;
}