#include <type_traits>
#include <iostream>
struct my_abstract_class { virtual int x() = 0; };
struct my_incomplete_class;
int main()
{
::std::cout
<< std::is_convertible<int, int>::value << ::std::endl
<< std::is_convertible<int[], int[]>::value << ::std::endl
<< std::is_convertible<int[2], int[2]>::value << ::std::endl
<< std::is_convertible<int(), int()>::value << ::std::endl
<< std::is_convertible<my_abstract_class, my_abstract_class>::value << ::std::endl
<< std::is_convertible<my_incomplete_class, my_incomplete_class>::value << ::std::endl
;
return 0;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgbXlfYWJzdHJhY3RfY2xhc3MgeyB2aXJ0dWFsIGludCB4KCkgPSAwOyB9OwpzdHJ1Y3QgbXlfaW5jb21wbGV0ZV9jbGFzczsKICAgIAppbnQgbWFpbigpCnsKICAgIDo6c3RkOjpjb3V0CiAgICAgICAgPDwgc3RkOjppc19jb252ZXJ0aWJsZTxpbnQsIGludD46OnZhbHVlIDw8IDo6c3RkOjplbmRsCiAgICAgICAgPDwgc3RkOjppc19jb252ZXJ0aWJsZTxpbnRbXSwgaW50W10+Ojp2YWx1ZSA8PCA6OnN0ZDo6ZW5kbAogICAgICAgIDw8IHN0ZDo6aXNfY29udmVydGlibGU8aW50WzJdLCBpbnRbMl0+Ojp2YWx1ZSA8PCA6OnN0ZDo6ZW5kbAogICAgICAgIDw8IHN0ZDo6aXNfY29udmVydGlibGU8aW50KCksIGludCgpPjo6dmFsdWUgPDwgOjpzdGQ6OmVuZGwKICAgICAgICA8PCBzdGQ6OmlzX2NvbnZlcnRpYmxlPG15X2Fic3RyYWN0X2NsYXNzLCBteV9hYnN0cmFjdF9jbGFzcz46OnZhbHVlIDw8IDo6c3RkOjplbmRsCiAgICAgICAgPDwgc3RkOjppc19jb252ZXJ0aWJsZTxteV9pbmNvbXBsZXRlX2NsYXNzLCBteV9pbmNvbXBsZXRlX2NsYXNzPjo6dmFsdWUgPDwgOjpzdGQ6OmVuZGwKICAgICAgICA7CiAgICByZXR1cm4gMDsKfQ==