#include <iostream>
#include <ios>
#include <string>
#include <type_traits>
#include <memory>
struct value
{
std::unique_ptr<std::string> s;
};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_move_constructible<value>::value << '\n';
std::cout << std::is_move_assignable<value>::value << '\n';
using str_ptr = std::unique_ptr<std::string>;
std::cout << std::is_move_constructible<str_ptr>::value << '\n';
std::cout << std::is_move_assignable<str_ptr>::value << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9zPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDxtZW1vcnk+CgpzdHJ1Y3QgdmFsdWUKewogICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPiBzOwp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGE7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWU+Ojp2YWx1ZSA8PCAnXG4nOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6aXNfbW92ZV9hc3NpZ25hYmxlPHZhbHVlPjo6dmFsdWUgICAgPDwgJ1xuJzsKCiAgICB1c2luZyBzdHJfcHRyID0gc3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPjsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxzdHJfcHRyPjo6dmFsdWUgPDwgJ1xuJzsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmlzX21vdmVfYXNzaWduYWJsZTxzdHJfcHRyPjo6dmFsdWUgICAgPDwgJ1xuJzsKCiAgICByZXR1cm4gMDsKfQo=