[PATCH] D134928: [Sema] Don't treat a non-null template argument as if it were null.

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 30 12:36:40 PDT 2022


erichkeane added inline comments.


================
Comment at: clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp:31
 IP<&tl> ip7; // expected-error{{non-type template argument of type 'int *' is not a constant expression}}
+IP<(int*)1> ip8; // expected-error {{non-type template argument does not refer to any declaration}}
 
----------------
shafik wrote:
> shafik wrote:
> > It looks like in C++17 mode we catch this case: https://godbolt.org/z/s43oE5qWE
> Another case to check for:
> 
> ```
> IP<(int*)(1-1)> ip9;
> ```
> 
> In C++11 the wording use to allow `integer constant expressions`
The new diagnostic here is unfortunate.  That 'does not refer to any declaration' doesn't really let me know that it is illegal because that isn't a NPE.  

The 'treat it as a null ptr' here is obviously awful, but I find myself wondering if we can do better on this diagnostic trivially enough?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134928/new/

https://reviews.llvm.org/D134928



More information about the cfe-commits mailing list