1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x %s 2 // expected-no-diagnostics 3 4 enum X : short { A, B }; 5 extern decltype(+A) x; 6 extern int x; 7 8 enum Y : long { C, D }; 9 extern decltype(+C) y; 10 extern long y; 11 12 // An enum with a fixed underlying type has an integral promotion to that type, 13 // and to its promoted type. 14 enum B : bool { false_, true_ }; 15 template<bool> struct T {}; 16 T<false_> f; 17 T<true_> t; 18 // FIXME: DR1407 will make this ill-formed 19 T<+true_> q; // desired-error {{conversion from 'int' to 'bool'}} 20 21 enum B2 : bool { 22 a = false, 23 b = true, 24 c = false_, 25 d = true_, 26 // FIXME: DR1407 will make this ill-formed 27 e = +false_ // desired-error {{conversion from 'int' to 'bool'}} 28 }; 29