fork(1) download
#include <iostream>

template <class T>
struct sum 
{
	T val;
	sum(T a) : val(a) {}
	
	template <class T2>
	auto operator()(T2 a) -> sum<decltype(val + a)> { return val + a; }

	//sum operator()(T a) { return val + a; }
	
	operator T() { return val; }
};

template <class T>
sum<T> f(T a)
{
	return a;
}

int main()
{
	std::cout << f(1)(2.5)(3.1f)(4) << std::endl;
}
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
10.6