#include template std::enable_if_t::value, T> fn(T x) { return x * x; } template std::enable_if_t::value, T> fn(T x) { return --x; } int main() { float x = 4.4; std::cout << "floating: " << fn((double)5.3) << "\nintegral: " << fn(4l); return 0; }