#include <iostream>
#include <string>
#include <vector>
#include <array>
#include <type_traits>
template<typename T>
struct is_container
{
static const bool value = false;
};
template<typename T , size_t N>
struct is_container<std::array<T , N>>
{
static const bool value = true;
};
template<typename T , typename Alloc>
struct is_container<std::vector<T , Alloc>>
{
static const bool value = true;
};
template<typename T , typename Enable = void>
struct is_container_sequence
{
static const bool value = false;
};
template<typename T>
struct is_container_sequence<T , typename std::enable_if<is_container<T>::value>::type>
{
static const bool value = true;
};
int main()
{
std::vector<int> vec1;
std::vector<std::string> vec2;
std::cout << is_container_sequence<std::vector<int>>::value
<< is_container_sequence<std::vector<std::string>>::value
<< std::is_pod<int>::value;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoJc3RydWN0IGlzX2NvbnRhaW5lcgoJewoJCXN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Cgl9OwoKCXRlbXBsYXRlPHR5cGVuYW1lIFQgLCBzaXplX3QgTj4KCXN0cnVjdCBpc19jb250YWluZXI8c3RkOjphcnJheTxUICwgTj4+Cgl7CgkJc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwoJfTsKCgl0ZW1wbGF0ZTx0eXBlbmFtZSBUICwgdHlwZW5hbWUgQWxsb2M+CglzdHJ1Y3QgaXNfY29udGFpbmVyPHN0ZDo6dmVjdG9yPFQgLCBBbGxvYz4+Cgl7CgkJc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwoJfTsKCgl0ZW1wbGF0ZTx0eXBlbmFtZSBUICwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KCXN0cnVjdCBpc19jb250YWluZXJfc2VxdWVuY2UKCXsKCQlzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwoJfTsKICAgIAogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KCXN0cnVjdCBpc19jb250YWluZXJfc2VxdWVuY2U8VCAsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGlzX2NvbnRhaW5lcjxUPjo6dmFsdWU+Ojp0eXBlPgoJewoJCXN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKCX07CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPGludD4gdmVjMTsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWMyOwogICAgCiAgICBzdGQ6OmNvdXQgPDwgaXNfY29udGFpbmVyX3NlcXVlbmNlPHN0ZDo6dmVjdG9yPGludD4+Ojp2YWx1ZQogICAgCTw8IGlzX2NvbnRhaW5lcl9zZXF1ZW5jZTxzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+Ojp2YWx1ZQogICAgCTw8IHN0ZDo6aXNfcG9kPGludD46OnZhbHVlOwp9Cg==