- #include <functional> 
- #include <memory> 
- #include <utility> 
- #include <iostream> 
-   
- template <typename T, typename... Args> 
- std::unique_ptr<T> make_unique(Args&&... args) { 
-     return std::unique_ptr<T>{new T{std::forward<Args>(args)...}}; 
- } 
-   
- template <typename T> 
- class Movable { 
-     T value; 
- public: 
-     explicit Movable(T value) : 
-         value{std::move(value)} {} 
-     ~Movable() { std::cout << "~Movable()" << std::endl; } 
-     Movable(const Movable&) = delete; 
-     Movable& operator = (const Movable&) = delete; 
-     friend std::ostream& operator << (std::ostream& os, const Movable& m) { 
-         return os << m.value; 
-     } 
- }; 
-   
- int main() { 
-     using namespace std::placeholders; 
-     auto f = std::bind([](std::unique_ptr<Movable<int>>& p, int i, const char* s){ 
-         std::cout << *p << ' ' << i << ' ' << s << std::endl; 
-     }, make_unique<Movable<int>>(42), _1, _2); 
-     f(13, "Hello, "); 
-     f(69, "World!"); 
- } 
-   
				I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxtZW1vcnk+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4Kc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7CiAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFQ+e25ldyBUe3N0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLn19Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgTW92YWJsZSB7CiAgICBUIHZhbHVlOwpwdWJsaWM6CiAgICBleHBsaWNpdCBNb3ZhYmxlKFQgdmFsdWUpIDoKICAgICAgICB2YWx1ZXtzdGQ6Om1vdmUodmFsdWUpfSB7fQogICAgfk1vdmFibGUoKSB7IHN0ZDo6Y291dCA8PCAifk1vdmFibGUoKSIgPDwgc3RkOjplbmRsOyB9CiAgICBNb3ZhYmxlKGNvbnN0IE1vdmFibGUmKSA9IGRlbGV0ZTsKICAgIE1vdmFibGUmIG9wZXJhdG9yID0gKGNvbnN0IE1vdmFibGUmKSA9IGRlbGV0ZTsKICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBNb3ZhYmxlJiBtKSB7CiAgICAgICAgcmV0dXJuIG9zIDw8IG0udmFsdWU7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OnBsYWNlaG9sZGVyczsKICAgIGF1dG8gZiA9IHN0ZDo6YmluZChbXShzdGQ6OnVuaXF1ZV9wdHI8TW92YWJsZTxpbnQ+PiYgcCwgaW50IGksIGNvbnN0IGNoYXIqIHMpewogICAgICAgIHN0ZDo6Y291dCA8PCAqcCA8PCAnICcgPDwgaSA8PCAnICcgPDwgcyA8PCBzdGQ6OmVuZGw7CiAgICB9LCBtYWtlX3VuaXF1ZTxNb3ZhYmxlPGludD4+KDQyKSwgXzEsIF8yKTsKICAgIGYoMTMsICJIZWxsbywgIik7CiAgICBmKDY5LCAiV29ybGQhIik7Cn0K