#include<functional>
#include<iostream>
#include<string>
struct Polly
{
    template<typename T,typename U>
    auto operator()(T t,U u) const -> decltype(t+u)
    {
        return t+u;
    }
};
int main()
{
    auto polly=std::bind(Polly(),std::placeholders::_1,"confunsing");
    std::cout<<polly(4)<<polly(std::string(" this is "))<<std::endl;
}
Now I don`t understand the use of const here: const -> decltype(t+u). I am using decltype to be able to return multiples types of data.
 
    