#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <numeric>
#include <functional>
using namespace std;
using namespace std::tr1::placeholders;
string Encoder(char c)
{
switch (c)
{
case '<': return "<";
case '>': return ">";
case '&': return "&";
case '\'': return "'";
case '"': return """;
default: return string(1, c);
}
}
int main()
{
string s("<1>");
string s0("&.&");
char c = 'c';
cout<< multiplies<int>()(3,4)<<endl;
//cout << plus<string>(s,c) <<endl;
string s2 = std::accumulate(s.begin(), s.end(), string(), bind(plus<string>(),_1,bind(Encoder,_2)));
cout<<s2<<endl;
return 0;
}