davrec added inline comments.
================ Comment at: clang/include/clang/AST/ASTContext.h:520-523 + /// Like InstantiatedFromUsingDecl, but for using-enum declarations. Maps + /// from the instantiated using-enum to the templated decl from whence it + /// came. + llvm::DenseMap<NamedDecl *, NamedDecl *> InstantiatedFromUsingEnumDecl; ---------------- davrec wrote: > We need a detailed example in the documentation, since IIUC P1099 does not > allow a using-enum-declaration to name "dependent" enums and thus is > distinguished from using-declarations. Specifically the wording is: > > using-enum-declaration: > > using elaborated-enum-specifier ; > > 1. The elaborated-enum-specifier shall not name a dependent type and the > > type shall have a reachable enum-specifier. > > ... > (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1099r5.html) > > Now I'm not 100% clear on what that wording permits, but we need an example > of how a UsingEnumDecl can be an instantiation. Something like this maybe? > ``` > template<unsigned N> > struct Foo { > enum E { e = N }; > }; > template<unsigned N> > struct Bar : Foo<N> { > using enum Foo<N>::E; //Allowed per P1099? > }; > Bar<1>; > ``` > > We can also clarify the types here to > ``` > llvm::DenseMap<UsingEnumDecl *, UsingEnumDecl *> > ``` > since there are no UnresolvedUsing*Decl` versions to account for, as there > were with using decls. It occurs to me that, duh, non-dependent declarations in a template still need to be instantiated. So in summary I would just change these lines to this: ``` /// Like InstantiatedFromUsingDecl, but for using-enum-declarations. Maps /// from the instantiated using-enum to the templated decl from whence it /// came. /// Note that using-enum-declarations cannot be dependent and /// thus will never be instantiated from an "unresolved" /// version thereof (as with using-declarations), so each mapping is from /// a (resolved) UsingEnumDecl to a (resolved) UsingEnumDecl. llvm::DenseMap<UsingEnumDecl *, UsingEnumDecl *> InstantiatedFromUsingEnumDecl; ``` CHANGES SINCE LAST ACTION https://reviews.llvm.org/D102241/new/ https://reviews.llvm.org/D102241 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits