19ca5c425SRichard Smith // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 2*c6e68daaSAndy Gibbs // expected-no-diagnostics 3b327eac1SDouglas Gregor 4b327eac1SDouglas Gregor enum class EC { ec1 }; 5b327eac1SDouglas Gregor test0(EC ec)6b327eac1SDouglas Gregorvoid test0(EC ec) { 7b327eac1SDouglas Gregor (void)static_cast<bool>(ec); 8b327eac1SDouglas Gregor (void)static_cast<bool>(EC::ec1); 9b327eac1SDouglas Gregor (void)static_cast<char>(ec); 10b327eac1SDouglas Gregor (void)static_cast<char>(EC::ec1); 11b327eac1SDouglas Gregor (void)static_cast<int>(ec); 12b327eac1SDouglas Gregor (void)static_cast<int>(EC::ec1); 13b327eac1SDouglas Gregor (void)static_cast<unsigned long>(ec); 14b327eac1SDouglas Gregor (void)static_cast<unsigned long>(EC::ec1); 15b327eac1SDouglas Gregor (void)static_cast<float>(ec); 16b327eac1SDouglas Gregor (void)static_cast<float>(EC::ec1); 17b327eac1SDouglas Gregor (void)static_cast<double>(ec); 18b327eac1SDouglas Gregor (void)static_cast<double>(EC::ec1); 19b327eac1SDouglas Gregor } 20b327eac1SDouglas Gregor 21b327eac1SDouglas Gregor namespace PR9107 { 22b327eac1SDouglas Gregor enum E {}; addressof(_Tp & __x)23b327eac1SDouglas Gregor template <class _Tp> inline _Tp* addressof(_Tp& __x) { 24b327eac1SDouglas Gregor return (_Tp*)&(char&)__x; 25b327eac1SDouglas Gregor } test()26b327eac1SDouglas Gregor void test() { 27b327eac1SDouglas Gregor E a; 28b327eac1SDouglas Gregor addressof(a); 29b327eac1SDouglas Gregor } 30b327eac1SDouglas Gregor } 31