template struct type_list {}; template struct A { using self = A; using type = type_list; }; template struct test { using result = typename A::self::self::self::self::self::type; using expect = type_list; };