#include <iostream>
#include <vector>
template<typename C>
struct IsIterable
{
typedef char true_type;
typedef long false_type;
template<class T> static true_type is_beg_iterable(int i,
typename T::const_iterator = C().begin());
template<class T> static false_type is_beg_iterable(...);
enum { value = sizeof(is_beg_iterable<C>(0)) == sizeof(true_type) };
};
int main() {
std::cout << IsIterable<std::vector<int>>::value << std::endl;
std::cout << IsIterable<int>::value << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGU8dHlwZW5hbWUgQz4Kc3RydWN0IElzSXRlcmFibGUKewogICAgdHlwZWRlZiBjaGFyIHRydWVfdHlwZTsKICAgIHR5cGVkZWYgbG9uZyBmYWxzZV90eXBlOwoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyB0cnVlX3R5cGUgIGlzX2JlZ19pdGVyYWJsZShpbnQgaSwKICAgICAgICB0eXBlbmFtZSBUOjpjb25zdF9pdGVyYXRvciA9IEMoKS5iZWdpbigpKTsKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyBmYWxzZV90eXBlIGlzX2JlZ19pdGVyYWJsZSguLi4pOwoKICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZihpc19iZWdfaXRlcmFibGU8Qz4oMCkpID09IHNpemVvZih0cnVlX3R5cGUpIH07Cn07CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6Y291dCA8PCBJc0l0ZXJhYmxlPHN0ZDo6dmVjdG9yPGludD4+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgSXNJdGVyYWJsZTxpbnQ+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7Cn0K