Summary: Sugar, like ConstantExpr, causes an infinite expansion of the template object. Reviewers: rsmith, aaron.ballman Reviewed By: aaron.ballman Subscribers: riccibruno, aaron.ballman, cfe-commits, tzik, rnk Differential Revision: https://reviews.llvm.org/D57114 llvm-svn: 352307
17 lines
400 B
C++
17 lines
400 B
C++
// RUN: %clang_cc1 -std=c++17 -fms-extensions -triple=x86_64-pc-win32 -verify %s
|
|
// expected-no-diagnostics
|
|
|
|
// PR40395 - ConstantExpr shouldn't cause the template object to infinitely
|
|
// expand.
|
|
struct _GUID {};
|
|
struct __declspec(uuid("{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}")) B {};
|
|
|
|
template <const _GUID* piid>
|
|
struct A {
|
|
virtual void baz() { A<piid>(); }
|
|
};
|
|
|
|
void f() {
|
|
A<&__uuidof(B)>();
|
|
}
|