diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-11-06 00:12:53 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-11-06 00:12:53 +0000 |
commit | 6a66b388469f045c9fcff839595900c9f1512177 (patch) | |
tree | d531de22a587b00d3911f0bf6eeadd2fa42b0bbb /include/llvm/ADT | |
parent | ef1fad533ebc1a692321e96443a35ca5407c26cb (diff) | |
download | external_llvm-6a66b388469f045c9fcff839595900c9f1512177.zip external_llvm-6a66b388469f045c9fcff839595900c9f1512177.tar.gz external_llvm-6a66b388469f045c9fcff839595900c9f1512177.tar.bz2 |
Add a bunch of missing "template" keywords to disambiguate dependent template names. GCC eats this ill-formed code, Clang does not. I already filed PR5404 to improve recovery in this case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86204 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT')
-rw-r--r-- | include/llvm/ADT/PointerUnion.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/include/llvm/ADT/PointerUnion.h b/include/llvm/ADT/PointerUnion.h index 33f2fcb..49c8940 100644 --- a/include/llvm/ADT/PointerUnion.h +++ b/include/llvm/ADT/PointerUnion.h @@ -186,8 +186,9 @@ namespace llvm { int is() const { // Is it PT1/PT2? if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1) - return Val.is<InnerUnion>() && Val.get<InnerUnion>().is<T>(); - return Val.is<T>(); + return Val.template is<InnerUnion>() && + Val.template get<InnerUnion>().template is<T>(); + return Val.template is<T>(); } /// get<T>() - Return the value of the specified pointer type. If the @@ -197,9 +198,9 @@ namespace llvm { assert(is<T>() && "Invalid accessor called"); // Is it PT1/PT2? if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1) - return Val.get<InnerUnion>().get<T>(); + return Val.template get<InnerUnion>().template get<T>(); - return Val.get<T>(); + return Val.template get<T>(); } /// dyn_cast<T>() - If the current value is of the specified pointer type, @@ -291,8 +292,10 @@ namespace llvm { int is() const { // Is it PT1/PT2? if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1) - return Val.is<InnerUnion1>() && Val.get<InnerUnion1>().is<T>(); - return Val.is<InnerUnion2>() && Val.get<InnerUnion2>().is<T>(); + return Val.template is<InnerUnion1>() && + Val.template get<InnerUnion1>().template is<T>(); + return Val.template is<InnerUnion2>() && + Val.template get<InnerUnion2>().template is<T>(); } /// get<T>() - Return the value of the specified pointer type. If the @@ -302,9 +305,9 @@ namespace llvm { assert(is<T>() && "Invalid accessor called"); // Is it PT1/PT2? if (::llvm::getPointerUnionTypeNum<PT1, PT2>((T*)0) != -1) - return Val.get<InnerUnion1>().get<T>(); + return Val.template get<InnerUnion1>().template get<T>(); - return Val.get<InnerUnion2>().get<T>(); + return Val.template get<InnerUnion2>().template get<T>(); } /// dyn_cast<T>() - If the current value is of the specified pointer type, |