majnemer added a comment. In https://reviews.llvm.org/D43576#1016418, @zahiraam wrote:
> In https://reviews.llvm.org/D43576#1016295, @majnemer wrote: > > > We should really, really avoid making this sort of change without first > > trying to desugar uuidof into a reference to a variable. That would solve a > > ton of problems, problems like this one. > > > Not sure I fully understand what you are proposing? > > Are you proposing that generated symbols like this: > > ??4?$A@$E?_GUID_ddb47a6a_0f23_11d5_9109_00e0296b75d3@@3U__s_GUID@@B@@QEAAAEAV0@AEBV0@@Z > > Be de-sugared? Wouldn't that be different that what MS is doing? > Can you please give me more details about what you are thinking of? > Thanks. We create an AST such that the following: struct _GUID; template <const _GUID *> class A {}; struct __declspec(uuid("{DDB47A6A-0F23-11D5-9109-00E0296B75D3}")) S {}; struct __declspec(dllexport) C : public A<&__uuidof(S)> {}; is turned into something like: struct _GUID; __declspec(selectany) __s_GUID const _GUID_ddb47a6a_0f23_11d5_9109_00e0296b75d3 = {...}; template <const _GUID *> class A {}; struct __declspec(uuid("{DDB47A6A-0F23-11D5-9109-00E0296B75D3}")) S {}; struct __declspec(dllexport) C : public A<&_GUID_ddb47a6a_0f23_11d5_9109_00e0296b75d3> {}; https://reviews.llvm.org/D43576 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits