aboutsummaryrefslogtreecommitdiff
path: root/include/clang/AST/Decl.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/AST/Decl.h')
-rw-r--r--include/clang/AST/Decl.h17
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.
///