struct b {};
struct c {};
template <typename A, typename B = b, typename C = c>
struct Outer
{
typedef A typeA;
typedef B typeB;
typedef C typeC;
};
template<typename A, typename B>
struct AnotherUserDefinedType {
template<typename CC, typename AA = A, typename BB = B>
struct Inner : public Outer<AA, BB, CC> {};
Inner<int> AnIntInner;
Inner<float> AFloatInner;
};
int main()
{
AnotherUserDefinedType<bool, double> a;
}
c3RydWN0IGIge307CnN0cnVjdCBjIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEIgPSBiLCB0eXBlbmFtZSBDID0gYz4Kc3RydWN0IE91dGVyCnsKICAgIHR5cGVkZWYgQSB0eXBlQTsKICAgIHR5cGVkZWYgQiB0eXBlQjsKICAgIHR5cGVkZWYgQyB0eXBlQzsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CnN0cnVjdCBBbm90aGVyVXNlckRlZmluZWRUeXBlIHsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIENDLCB0eXBlbmFtZSBBQSA9IEEsIHR5cGVuYW1lIEJCID0gQj4KICAgIHN0cnVjdCBJbm5lciA6IHB1YmxpYyBPdXRlcjxBQSwgQkIsIENDPiB7fTsKCiAgICBJbm5lcjxpbnQ+IEFuSW50SW5uZXI7CiAgICBJbm5lcjxmbG9hdD4gQUZsb2F0SW5uZXI7Cgp9OwoKaW50IG1haW4oKQp7CiAgICBBbm90aGVyVXNlckRlZmluZWRUeXBlPGJvb2wsIGRvdWJsZT4gYTsKfQo=