#include <iostream>
#include <string>
#include <type_traits>
template<typename, typename = void>
struct is_incrementable : std::false_type {};
template<typename T>
struct is_incrementable<T, std::void_t<decltype( ++std::declval<T&>() )>> : std::true_type {};
int main()
{
std::cout << is_incrementable<std::string>::value << std::endl;
std::cout << is_incrementable<int>::value << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgpzdHJ1Y3QgaXNfaW5jcmVtZW50YWJsZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBpc19pbmNyZW1lbnRhYmxlPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKCArK3N0ZDo6ZGVjbHZhbDxUJj4oKSApPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IGlzX2luY3JlbWVudGFibGU8c3RkOjpzdHJpbmc+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgaXNfaW5jcmVtZW50YWJsZTxpbnQ+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7Cn0=