#include <iostream>
#include <type_traits>
using namespace std;
struct A { };
struct B { B& operator= (const B&) = delete; };
int main() {
std::cout << std::boolalpha;
std::cout << "is_copy_assignable:" << std::endl;
std::cout << "int: " << std::is_copy_assignable<int>::value << std::endl;
std::cout << "A: " << std::is_copy_assignable<A>::value << std::endl;
std::cout << "B: " << std::is_copy_assignable<B>::value << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgQSB7IH07CnN0cnVjdCBCIHsgQiYgb3BlcmF0b3I9IChjb25zdCBCJikgPSBkZWxldGU7IH07CgppbnQgbWFpbigpIHsKCXN0ZDo6Y291dCA8PCBzdGQ6OmJvb2xhbHBoYTsKCXN0ZDo6Y291dCA8PCAiaXNfY29weV9hc3NpZ25hYmxlOiIgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJpbnQ6ICIgPDwgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8aW50Pjo6dmFsdWUgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJBOiAiIDw8IHN0ZDo6aXNfY29weV9hc3NpZ25hYmxlPEE+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIkI6ICIgPDwgc3RkOjppc19jb3B5X2Fzc2lnbmFibGU8Qj46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9