| 123456789101112131415161718192021222324252627282930 |
- // RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -emit-pch -o %t %s
- // RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -include-pch %t %s -verify
- #ifndef HEADER
- #define HEADER
- template<typename T>
- void f(T t) {
- __if_exists(T::foo) {
- { }
- t.foo();
- }
- __if_not_exists(T::bar) {
- int *i = t;
- { }
- }
- }
- #else
- struct HasFoo {
- void foo();
- };
- struct HasBar {
- void bar(int);
- void bar(float);
- };
- template void f(HasFoo); // expected-note{{in instantiation of function template specialization 'f<HasFoo>' requested here}}
- // expected-error@14{{no viable conversion from 'HasFoo' to 'int *'}}
- template void f(HasBar);
- #endif
|