1*0a6a1f1dSLionel Sambuc struct X { 2*0a6a1f1dSLionel Sambuc int v; 3*0a6a1f1dSLionel Sambuc typedef int t; 4*0a6a1f1dSLionel Sambuc }; 5*0a6a1f1dSLionel Sambuc 6*0a6a1f1dSLionel Sambuc struct YB { 7*0a6a1f1dSLionel Sambuc typedef YB Y; 8*0a6a1f1dSLionel Sambuc int value; 9*0a6a1f1dSLionel Sambuc typedef int type; 10*0a6a1f1dSLionel Sambuc }; 11*0a6a1f1dSLionel Sambuc 12*0a6a1f1dSLionel Sambuc struct YBRev { 13*0a6a1f1dSLionel Sambuc typedef int value; 14*0a6a1f1dSLionel Sambuc int type; 15*0a6a1f1dSLionel Sambuc }; 16*0a6a1f1dSLionel Sambuc 17*0a6a1f1dSLionel Sambuc template<typename T> struct C : X, T { 18*0a6a1f1dSLionel Sambuc using T::value; 19*0a6a1f1dSLionel Sambuc using typename T::type; 20*0a6a1f1dSLionel Sambuc using X::v; 21*0a6a1f1dSLionel Sambuc using typename X::t; 22*0a6a1f1dSLionel Sambuc }; 23*0a6a1f1dSLionel Sambuc 24*0a6a1f1dSLionel Sambuc template<typename T> struct D : X, T { 25*0a6a1f1dSLionel Sambuc // Mismatch in type/non-type-ness. 26*0a6a1f1dSLionel Sambuc using typename T::value; 27*0a6a1f1dSLionel Sambuc using T::type; 28*0a6a1f1dSLionel Sambuc using X::v; 29*0a6a1f1dSLionel Sambuc using typename X::t; 30*0a6a1f1dSLionel Sambuc }; 31*0a6a1f1dSLionel Sambuc 32*0a6a1f1dSLionel Sambuc template<typename T> struct E : X, T { 33*0a6a1f1dSLionel Sambuc // Mismatch in using/access-declaration-ness. 34*0a6a1f1dSLionel Sambuc T::value; 35*0a6a1f1dSLionel Sambuc X::v; 36*0a6a1f1dSLionel Sambuc }; 37*0a6a1f1dSLionel Sambuc 38*0a6a1f1dSLionel Sambuc template<typename T> struct F : X, T { 39*0a6a1f1dSLionel Sambuc // Mismatch in nested-name-specifier. 40*0a6a1f1dSLionel Sambuc using T::Y::value; 41*0a6a1f1dSLionel Sambuc using typename T::Y::type; 42*0a6a1f1dSLionel Sambuc using ::X::v; 43*0a6a1f1dSLionel Sambuc using typename ::X::t; 44*0a6a1f1dSLionel Sambuc }; 45*0a6a1f1dSLionel Sambuc 46*0a6a1f1dSLionel Sambuc // Force instantiation. 47*0a6a1f1dSLionel Sambuc typedef C<YB>::type I; 48*0a6a1f1dSLionel Sambuc typedef D<YBRev>::t I; 49*0a6a1f1dSLionel Sambuc typedef E<YB>::type I; 50*0a6a1f1dSLionel Sambuc typedef F<YB>::type I; 51