p9-0x.cpp revision 8e8fb3be5bd78f0564444eca02b404566a5f3b5d
19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// expected-no-diagnostics
343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenenum class EC { ec1 };
543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid test0(EC ec) {
743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<bool>(ec);
843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<bool>(EC::ec1);
943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<char>(ec);
1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<char>(EC::ec1);
1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<int>(ec);
1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<int>(EC::ec1);
1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<unsigned long>(ec);
1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<unsigned long>(EC::ec1);
1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<float>(ec);
1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<float>(EC::ec1);
1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<double>(ec);
1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  (void)static_cast<double>(EC::ec1);
1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}
2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansennamespace PR9107 {
2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  enum E {};
2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  template <class _Tp> inline _Tp* addressof(_Tp& __x) {
2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    return (_Tp*)&(char&)__x;
2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  }
2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  void test() {
2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    E a;
2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen    addressof(a);
2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen  }
3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}
319d58c2b1c27d8b2890b9bd46e57d3842b09e0292christian.plesner.hansen@gmail.com