#include <vector>
#include <iostream>
using namespace std;
template <typename T>
struct has_const_iterator {
typedef char yes[1];
typedef char no[2];
template <typename C> static yes& test(typename C::const_iterator*);
template <typename> static no& test(...);
static const bool value = sizeof(test<T>(0)) == sizeof(yes);
};
template <bool> class bool2class {};
template <class T>
void set_inner(const std::string &path, T & var, bool2class<false> *) {
cout << "Not STL" << endl;
}
template <class T>
void set_inner(const std::string &path, T & var, bool2class<true> *) {
cout << "STL" << endl;
}
template <class T>
void set(const std::string &path, T &var) {
set_inner(path, var, (bool2class<has_const_iterator<T>::value>*)0);
}
int main() {
char a[4];
vector<char> b;
set("a:", a);
set("b: ", b);
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3QgaGFzX2NvbnN0X2l0ZXJhdG9yIHsKICAgIHR5cGVkZWYgY2hhciB5ZXNbMV07CiAgICB0eXBlZGVmIGNoYXIgbm9bMl07CiAKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDPiBzdGF0aWMgeWVzJiB0ZXN0KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKik7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+IHN0YXRpYyBubyYgdGVzdCguLi4pOwoKICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHRlc3Q8VD4oMCkpID09IHNpemVvZih5ZXMpOwp9OwoKdGVtcGxhdGUgPGJvb2w+IGNsYXNzIGJvb2wyY2xhc3Mge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kdm9pZCBzZXRfaW5uZXIoY29uc3Qgc3RkOjpzdHJpbmcgJnBhdGgsIFQgJiB2YXIsIGJvb2wyY2xhc3M8ZmFsc2U+ICopIHsKCWNvdXQgPDwgIk5vdCBTVEwiIDw8IGVuZGw7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgp2b2lkIHNldF9pbm5lcihjb25zdCBzdGQ6OnN0cmluZyAmcGF0aCwgVCAmIHZhciwgYm9vbDJjbGFzczx0cnVlPiAqKSB7Cgljb3V0IDw8ICJTVEwiIDw8IGVuZGw7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgp2b2lkIHNldChjb25zdCBzdGQ6OnN0cmluZyAmcGF0aCwgVCAmdmFyKSB7CglzZXRfaW5uZXIocGF0aCwgdmFyLCAoYm9vbDJjbGFzczxoYXNfY29uc3RfaXRlcmF0b3I8VD46OnZhbHVlPiopMCk7Cn0KCmludCBtYWluKCkgewoJY2hhciBhWzRdOwoJdmVjdG9yPGNoYXI+IGI7CglzZXQoImE6IiwgYSk7CglzZXQoImI6ICIsIGIpOwp9