diff options
Diffstat (limited to 'include/clang/AST/Decl.h')
-rw-r--r-- | include/clang/AST/Decl.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h index 7d5b66e02a..0ed18b0f53 100644 --- a/include/clang/AST/Decl.h +++ b/include/clang/AST/Decl.h @@ -1999,6 +1999,11 @@ class RecordDecl : public TagDecl { /// containing an object. bool HasObjectMember : 1; + /// InvisibleToADL - This is true if this struct is invisible to + /// argument-dependent lookup. Certain builtin types have this + /// property. + bool InvisibleToADL : 1; + protected: RecordDecl(Kind DK, TagKind TK, DeclContext *DC, SourceLocation L, IdentifierInfo *Id, @@ -2041,6 +2046,18 @@ public: bool hasObjectMember() const { return HasObjectMember; } void setHasObjectMember (bool val) { HasObjectMember = val; } + /// \brief Determines whether this type is invisible to C++ + /// argument-dependent lookup. + /// + /// Types with this bit set behave like fundamental types: they are + /// never associated classes, and they do not add their contexts as + /// associated namespaces. + /// + /// This can be specified in user code as __attribute__((adl_invisible)), + /// but it's generally better not to. + bool isInvisibleToADL() const { return InvisibleToADL; } + void setInvisibleToADL(bool val = true) { InvisibleToADL = val; } + /// \brief Determines whether this declaration represents the /// injected class name. /// |