#include <list>
#include <vector>
template<class Cont, class NewT> struct SameContNewT : public std::false_type
{};
template<class T, class Alloc, class NewT>
struct SameContNewT<std::list<T, Alloc>, NewT>
{ typedef typename std::list<NewT> type; };
template<class T, class Alloc, class NewT>
struct SameContNewT<std::vector<T, Alloc>, NewT>
{ typedef typename std::vector<NewT> type; };
int main()
{
typedef std::list<int> IntList;
typedef std::list<float> FloatList;
typedef SameContNewT<IntList, float>::type FloatListToo;
static_assert(std::is_same<FloatListToo, FloatList>::value, "No.");
}
I2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZTxjbGFzcyBDb250LCBjbGFzcyBOZXdUPiBzdHJ1Y3QgU2FtZUNvbnROZXdUIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZQp7fTsKCnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jLCBjbGFzcyBOZXdUPgpzdHJ1Y3QgU2FtZUNvbnROZXdUPHN0ZDo6bGlzdDxULCBBbGxvYz4sIE5ld1Q+CnsgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Omxpc3Q8TmV3VD4gdHlwZTsgfTsKCnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jLCBjbGFzcyBOZXdUPgpzdHJ1Y3QgU2FtZUNvbnROZXdUPHN0ZDo6dmVjdG9yPFQsIEFsbG9jPiwgTmV3VD4KeyB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPE5ld1Q+IHR5cGU7IH07CgppbnQgbWFpbigpCnsKICAgIHR5cGVkZWYgc3RkOjpsaXN0PGludD4gSW50TGlzdDsKICAgIHR5cGVkZWYgc3RkOjpsaXN0PGZsb2F0PiBGbG9hdExpc3Q7CiAgICB0eXBlZGVmIFNhbWVDb250TmV3VDxJbnRMaXN0LCBmbG9hdD46OnR5cGUgRmxvYXRMaXN0VG9vOwogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RmxvYXRMaXN0VG9vLCBGbG9hdExpc3Q+Ojp2YWx1ZSwgIk5vLiIpOwp9