struct AA
{
typedef int a;
typedef const int b;
};
template< typename A >
struct BB
{
typename A::a a_A;
typedef typename A::b a_B;
BB()
{};
};
template< typename A >
struct CC
{
typename A::a a_A;
typedef typename A::b a_B;
CC() = default;
};
int main()
{
BB< AA > instance;
BB< AA >::a_B constInst( instance.a_A );
CC< AA > instance2;
CC< AA >::a_B constInst2( instance2.a_A );
return 0;
}
c3RydWN0IEFBCnsKICAgIHR5cGVkZWYgaW50IGE7CiAgICB0eXBlZGVmIGNvbnN0IGludCBiOwp9OwoKdGVtcGxhdGU8IHR5cGVuYW1lIEEgPgpzdHJ1Y3QgQkIKewogICAgdHlwZW5hbWUgQTo6YSBhX0E7CiAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OmIgYV9COwoKICAgIEJCKCkKICAgIHt9Owp9OwoKdGVtcGxhdGU8IHR5cGVuYW1lIEEgPgpzdHJ1Y3QgQ0MKewogICAgdHlwZW5hbWUgQTo6YSBhX0E7CiAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OmIgYV9COwoKICAgIENDKCkgPSBkZWZhdWx0Owp9OwoKaW50IG1haW4oKQp7CiAgICBCQjwgQUEgPiBpbnN0YW5jZTsKICAgIEJCPCBBQSA+OjphX0IgY29uc3RJbnN0KCBpbnN0YW5jZS5hX0EgKTsKCiAgICBDQzwgQUEgPiBpbnN0YW5jZTI7CiAgICBDQzwgQUEgPjo6YV9CIGNvbnN0SW5zdDIoIGluc3RhbmNlMi5hX0EgKTsKCiAgICByZXR1cm4gMDsKfQ==