1// { dg-do compile }
2
3template <class T>
4struct A
5{
6    typedef T type;
7};
8
9template <class T>
10struct B
11{
12    class type
13    {
14	type(); // { dg-error "private" }
15    };
16};
17
18template <class T>
19struct C : A<T>, B<T>
20{
21    using typename B<T>::type;
22
23    void f()
24    {
25	type j; // { dg-error "context" }
26    }
27};
28
29template class C<int>; // { dg-message "required" }
30
31template <class T>
32struct D
33{
34    typedef T type;
35};
36
37template <class T>
38class E : D<T>
39{
40    using typename D<T>::type; // { dg-message "previous" }
41    using typename D<T>::type; // { dg-error "redeclaration" }
42};
43