void foo1(int val) {}
void foo1(float val) {}

template <typename T>
void bar(T value) {
	foo1(value);
}

int main() {
	bar(1.f);
	bar(2);
	return 0;
}