template<typename T, typename U>
struct TemplateClass {
template<typename D = U>
class DefaultU {
D foo;
/* ... */
};
T& baz;
U bar;
/* ... */
};
int main()
{
int a = 0;
TemplateClass<int, int>::DefaultU<int> b;
TemplateClass<int, decltype(b)> foo = {a, b};
}
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4Kc3RydWN0IFRlbXBsYXRlQ2xhc3MgewoJCiAgdGVtcGxhdGU8dHlwZW5hbWUgRCA9IFU+CiAgY2xhc3MgRGVmYXVsdFUgewogICAgRCBmb287CiAgICAvKiAuLi4gKi8KICB9OwogIAogIAogIFQmIGJhejsKICBVIGJhcjsKICAvKiAuLi4gKi8KfTsKCgppbnQgbWFpbigpCnsKCQoJaW50IGEgPSAwOwoJVGVtcGxhdGVDbGFzczxpbnQsIGludD46OkRlZmF1bHRVPGludD4gYjsKCVRlbXBsYXRlQ2xhc3M8aW50LCBkZWNsdHlwZShiKT4gZm9vID0ge2EsIGJ9Owp9