#include <cassert>
#include <vector>
#include <map>
template<class container, class value_type>
struct rebind;
template<template <class> class container, class T, class value_type>
struct rebind<container<T>, value_type> { typedef container<value_type> other; };
template<template <class, class> class container, class T, class B, class value_type>
struct rebind<container<T, B>, value_type> { typedef container<value_type, B> other; };
template<template <class, class, class> class container, class T, class B, class C, class value_type>
struct rebind<container<T, B, C>, value_type> { typedef container<value_type, B, C> other; };
template<template <class, class, class, class> class container, class T, class B, class C, class D, class value_type>
struct rebind<container<T, B, C, D>, value_type> { typedef container<value_type, B, C, D> other; };
int main() {
rebind<std::vector<char>, int>::other y;
y.clear();
rebind<std::map<char, short>, int>::other z;
z.clear();
}
I2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+Cgp0ZW1wbGF0ZTxjbGFzcyBjb250YWluZXIsIGNsYXNzIHZhbHVlX3R5cGU+CnN0cnVjdCByZWJpbmQ7Cgp0ZW1wbGF0ZTx0ZW1wbGF0ZSA8Y2xhc3M+IGNsYXNzIGNvbnRhaW5lciwgY2xhc3MgVCwgY2xhc3MgdmFsdWVfdHlwZT4Kc3RydWN0IHJlYmluZDxjb250YWluZXI8VD4sIHZhbHVlX3R5cGU+IHsgdHlwZWRlZiBjb250YWluZXI8dmFsdWVfdHlwZT4gb3RoZXI7IH07CnRlbXBsYXRlPHRlbXBsYXRlIDxjbGFzcywgY2xhc3M+IGNsYXNzIGNvbnRhaW5lciwgY2xhc3MgVCwgY2xhc3MgQiwgY2xhc3MgdmFsdWVfdHlwZT4Kc3RydWN0IHJlYmluZDxjb250YWluZXI8VCwgQj4sIHZhbHVlX3R5cGU+IHsgdHlwZWRlZiBjb250YWluZXI8dmFsdWVfdHlwZSwgQj4gb3RoZXI7IH07CnRlbXBsYXRlPHRlbXBsYXRlIDxjbGFzcywgY2xhc3MsIGNsYXNzPiBjbGFzcyBjb250YWluZXIsIGNsYXNzIFQsIGNsYXNzIEIsIGNsYXNzIEMsICBjbGFzcyB2YWx1ZV90eXBlPgpzdHJ1Y3QgcmViaW5kPGNvbnRhaW5lcjxULCBCLCBDPiwgdmFsdWVfdHlwZT4geyB0eXBlZGVmIGNvbnRhaW5lcjx2YWx1ZV90eXBlLCBCLCBDPiBvdGhlcjsgfTsKdGVtcGxhdGU8dGVtcGxhdGUgPGNsYXNzLCBjbGFzcywgY2xhc3MsIGNsYXNzPiBjbGFzcyBjb250YWluZXIsIGNsYXNzIFQsIGNsYXNzIEIsIGNsYXNzIEMsIGNsYXNzIEQsICBjbGFzcyB2YWx1ZV90eXBlPgpzdHJ1Y3QgcmViaW5kPGNvbnRhaW5lcjxULCBCLCBDLCBEPiwgdmFsdWVfdHlwZT4geyB0eXBlZGVmIGNvbnRhaW5lcjx2YWx1ZV90eXBlLCBCLCBDLCBEPiBvdGhlcjsgfTsKCgppbnQgbWFpbigpIHsgIAogICAgcmViaW5kPHN0ZDo6dmVjdG9yPGNoYXI+LCBpbnQ+OjpvdGhlciB5OwogICAgeS5jbGVhcigpOwogICAgcmViaW5kPHN0ZDo6bWFwPGNoYXIsIHNob3J0PiwgaW50Pjo6b3RoZXIgejsKICAgIHouY2xlYXIoKTsKfQo=