Richard Smith | 762bb9d | 2011-10-13 22:29:44 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s |
Daniel Dunbar | ba69b3c | 2009-11-14 03:24:04 +0000 | [diff] [blame] | 2 | |
Anders Carlsson | 4e57992 | 2009-07-10 21:35:09 +0000 | [diff] [blame] | 3 | template<typename T, typename U> struct is_same { |
| 4 | static const bool value = false; |
| 5 | }; |
| 6 | |
| 7 | template<typename T> struct is_same<T, T> { |
| 8 | static const bool value = true; |
| 9 | }; |
| 10 | |
| 11 | struct S { |
| 12 | void f() { static_assert(is_same<decltype(this), S*>::value, ""); } |
| 13 | void g() const { static_assert(is_same<decltype(this), const S*>::value, ""); } |
| 14 | void h() volatile { static_assert(is_same<decltype(this), volatile S*>::value, ""); } |
| 15 | void i() const volatile { static_assert(is_same<decltype(this), const volatile S*>::value, ""); } |
| 16 | }; |