#include <vector>
#include <memory>
#include <algorithm>
#include <functional>
#include <iostream>
int main()
{
typedef std::unique_ptr<double> STDUPD;
std::vector<STDUPD> vIn;
vIn.push_back(STDUPD(new double(5)));
vIn.push_back(STDUPD(new double(2)));
vIn.push_back(STDUPD(new double(6)));
using namespace std::placeholders;
std::sort(
vIn.begin(),
vIn.end(),
std::bind(
std::less<double>(),
std::bind(&STDUPD::operator*, _1),
std::bind(&STDUPD::operator*, _2)
)
);
std::vector<STDUPD>::const_iterator it = vIn.begin(), end = vIn.end();
for ( ; it != end; ++it)
std::cout << ',' << **it;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmludCBtYWluKCkKewogICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlPiBTVERVUEQ7CiAgICAKICAgIHN0ZDo6dmVjdG9yPFNURFVQRD4gdkluOwogICAgdkluLnB1c2hfYmFjayhTVERVUEQobmV3IGRvdWJsZSg1KSkpOwogICAgdkluLnB1c2hfYmFjayhTVERVUEQobmV3IGRvdWJsZSgyKSkpOwogICAgdkluLnB1c2hfYmFjayhTVERVUEQobmV3IGRvdWJsZSg2KSkpOwogICAgCiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpwbGFjZWhvbGRlcnM7CiAgICBzdGQ6OnNvcnQoCiAgICAgICAgdkluLmJlZ2luKCksCiAgICAgICAgdkluLmVuZCgpLAogICAgICAgIHN0ZDo6YmluZCgKICAgICAgICAgICAgc3RkOjpsZXNzPGRvdWJsZT4oKSwKICAgICAgICAgICAgc3RkOjpiaW5kKCZTVERVUEQ6Om9wZXJhdG9yKiwgXzEpLAogICAgICAgICAgICBzdGQ6OmJpbmQoJlNURFVQRDo6b3BlcmF0b3IqLCBfMikKICAgICAgICApCiAgICApOwogICAgCiAgICBzdGQ6OnZlY3RvcjxTVERVUEQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHZJbi5iZWdpbigpLCBlbmQgPSB2SW4uZW5kKCk7CiAgICBmb3IgKCA7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICBzdGQ6OmNvdXQgPDwgJywnIDw8ICoqaXQ7Cn0=