forked from OSchip/llvm-project
Sema: Permit nullptr template args in MSVC compat mode
This fixes a regression I caused back in r211766. llvm-svn: 215609
This commit is contained in:
parent
32e5d8f3c0
commit
5c734ad844
|
@ -4189,7 +4189,7 @@ isNullPointerValueTemplateArgument(Sema &S, NonTypeTemplateParmDecl *Param,
|
|||
if (Arg->isValueDependent() || Arg->isTypeDependent())
|
||||
return NPV_NotNullPointer;
|
||||
|
||||
if (!S.getLangOpts().CPlusPlus11 || S.getLangOpts().MSVCCompat)
|
||||
if (!S.getLangOpts().CPlusPlus11)
|
||||
return NPV_NotNullPointer;
|
||||
|
||||
// Determine whether we have a constant expression.
|
||||
|
|
|
@ -118,7 +118,7 @@ typedef COM_CLASS_TEMPLATE_REF<struct_with_uuid, __uuidof(struct_with_uuid)> COM
|
|||
|
||||
COM_CLASS_TEMPLATE_REF<int, __uuidof(struct_with_uuid)> good_template_arg;
|
||||
|
||||
COM_CLASS_TEMPLATE<int, __uuidof(struct_with_uuid)> bad_template_arg; // expected-error {{non-type template argument of type 'const _GUID' cannot be converted to a value of type 'const GUID *' (aka 'const _GUID *')}}
|
||||
COM_CLASS_TEMPLATE<int, __uuidof(struct_with_uuid)> bad_template_arg; // expected-error {{non-type template argument of type 'const _GUID' is not a constant expression}}
|
||||
|
||||
namespace PR16911 {
|
||||
struct __declspec(uuid("{12345678-1234-1234-1234-1234567890aB}")) uuid;
|
||||
|
@ -357,3 +357,7 @@ void *_alloca(int);
|
|||
void foo(void) {
|
||||
__declspec(align(16)) int *buffer = (int *)_alloca(9);
|
||||
}
|
||||
|
||||
template <int *>
|
||||
struct NullptrArg {};
|
||||
NullptrArg<nullptr> a;
|
||||
|
|
Loading…
Reference in New Issue