#include <string>
#include <vector>
template <typename String, template<class> class Allocator>
class basic_data_object
{
template<typename T>
using array_container = std::vector<T, Allocator<T>>;
};
template <typename String, template<class> class Allocator, typename T>
struct get_data_object_value
{
};
template <typename String, template<class> class Allocator, typename T>
struct get_data_object_value
<String, Allocator,
typename basic_data_object<String, Allocator>::template array_container<T>>
{
};
int main()
{
get_data_object_value<std::string,std::allocator,std::vector<short>> obj;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmcsIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBBbGxvY2F0b3I+CmNsYXNzIGJhc2ljX2RhdGFfb2JqZWN0CnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogIHVzaW5nIGFycmF5X2NvbnRhaW5lciA9IHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcjxUPj47Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nLCB0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgQWxsb2NhdG9yLCB0eXBlbmFtZSBUPgpzdHJ1Y3QgZ2V0X2RhdGFfb2JqZWN0X3ZhbHVlCnsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmcsIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBBbGxvY2F0b3IsIHR5cGVuYW1lIFQ+CnN0cnVjdCBnZXRfZGF0YV9vYmplY3RfdmFsdWUKPFN0cmluZywgQWxsb2NhdG9yLAp0eXBlbmFtZSBiYXNpY19kYXRhX29iamVjdDxTdHJpbmcsIEFsbG9jYXRvcj46OnRlbXBsYXRlIGFycmF5X2NvbnRhaW5lcjxUPj4Kewp9OwoKaW50IG1haW4oKQp7CglnZXRfZGF0YV9vYmplY3RfdmFsdWU8c3RkOjpzdHJpbmcsc3RkOjphbGxvY2F0b3Isc3RkOjp2ZWN0b3I8c2hvcnQ+PiBvYmo7Cn0=