Ariel-Burton added a comment.

In D130123#3696786 <https://reviews.llvm.org/D130123#3696786>, @rnk wrote:

> In D130123#3696752 <https://reviews.llvm.org/D130123#3696752>, @Ariel-Burton 
> wrote:
>
>> What is your expectation for your template code fragment?  MSVC does not 
>> accept it.
>
> Yes, I checked, MSVC rejects it, so clang should have test expectations to 
> confirm that. It seems interesting or surprising, to me at least, that MSVC 
> really only accepts __ptr32 on pointers and typedefs of them.
>
>> On the other hand, MSVC does accept this:
>>
>>   template <typename T>
>>   void f(T  a) {
>>     (*a) += sizeof(a);
>>   }
>>   void g(int *p) {
>>     f(p);
>>   }
>>   void h(int *__ptr32 p) {
>>       f(p);
>>   }
>
> Right, this makes sense to me. MSVC's diagnostics say something about the 
> __ptr32 qualifier needing to appear after a `*`, so this extension must be 
> implemented at a pretty low-level, with some exception for typedefs, just 
> like what you have.

Thanks.

Just to make sure that we're on the same  page, you'd like to see a test that 
confirms that clang is rejecting the  `template<typename T> void f(T __ptr32 
a)` example, and possibly one that checks that my example is accepted.  Is that 
correct?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D130123

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to