aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/expr/expr.post/expr.static.cast/p9-0x.cpp
blob: c624c7e3f2f980299708b374217e885613ce42c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
// expected-no-diagnostics

enum class EC { ec1 };

void test0(EC ec) {
  (void)static_cast<bool>(ec);
  (void)static_cast<bool>(EC::ec1);
  (void)static_cast<char>(ec);
  (void)static_cast<char>(EC::ec1);
  (void)static_cast<int>(ec);
  (void)static_cast<int>(EC::ec1);
  (void)static_cast<unsigned long>(ec);
  (void)static_cast<unsigned long>(EC::ec1);
  (void)static_cast<float>(ec);
  (void)static_cast<float>(EC::ec1);
  (void)static_cast<double>(ec);
  (void)static_cast<double>(EC::ec1);
}

namespace PR9107 {
  enum E {};
  template <class _Tp> inline _Tp* addressof(_Tp& __x) {
    return (_Tp*)&(char&)__x;
  }
  void test() {
    E a;
    addressof(a);
  }
}