29 lines
698 B
C++
29 lines
698 B
C++
|
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x %s
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
enum X : short { A, B };
|
||
|
extern decltype(+A) x;
|
||
|
extern int x;
|
||
|
|
||
|
enum Y : long { C, D };
|
||
|
extern decltype(+C) y;
|
||
|
extern long y;
|
||
|
|
||
|
// An enum with a fixed underlying type has an integral promotion to that type,
|
||
|
// and to its promoted type.
|
||
|
enum B : bool { false_, true_ };
|
||
|
template<bool> struct T {};
|
||
|
T<false_> f;
|
||
|
T<true_> t;
|
||
|
// FIXME: DR1407 will make this ill-formed
|
||
|
T<+true_> q; // desired-error {{conversion from 'int' to 'bool'}}
|
||
|
|
||
|
enum B2 : bool {
|
||
|
a = false,
|
||
|
b = true,
|
||
|
c = false_,
|
||
|
d = true_,
|
||
|
// FIXME: DR1407 will make this ill-formed
|
||
|
e = +false_ // desired-error {{conversion from 'int' to 'bool'}}
|
||
|
};
|