|  | // RUN: %clang_cc1 -std=c++1y -triple i386-pc-win32 -fms-compatibility -fms-extensions -fsyntax-only -verify %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | int foo() { | 
|  | static_assert(sizeof(__FUNCDNAME__) == 12, "?foo@@YAHXZ"); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | // Within templates. | 
|  | template <typename T> | 
|  | int baz() { | 
|  | static_assert(sizeof(__FUNCDNAME__) == 16, "??$baz@H@@YAHXZ"); | 
|  |  | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | struct A { | 
|  | A() { | 
|  | static_assert(sizeof(__FUNCDNAME__) == 13, "??0A@@QAE@XZ"); | 
|  | } | 
|  | ~A() { | 
|  | static_assert(sizeof(__FUNCDNAME__) == 13, "??1A@@QAE@XZ"); | 
|  | } | 
|  | }; | 
|  |  | 
|  | int main() { | 
|  | static_assert(sizeof(__FUNCDNAME__) == 5, "main"); | 
|  |  | 
|  | baz<int>(); | 
|  |  | 
|  | return 0; | 
|  | } |