39 lines
		
	
	
		
			784 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			784 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -pedantic -std=c++11 -verify -triple x86_64-apple-darwin %s
 | |
| 
 | |
| enum E {};
 | |
| 
 | |
| struct Z {};
 | |
| typedef int Integer;
 | |
| 
 | |
| struct X {
 | |
|   enum E : 1;
 | |
|   enum E : Z; // expected-error{{invalid underlying type}}
 | |
|   enum E2 : int;
 | |
|   enum E3 : Integer;
 | |
| };
 | |
| 
 | |
| struct Y {
 | |
|   enum E : int(2);
 | |
|   enum E : Z(); // expected-error{{integral constant expression must have integral or unscoped enumeration type, not 'Z'}}
 | |
| };
 | |
| 
 | |
| namespace pr18587 {
 | |
| struct A {
 | |
|   enum class B {
 | |
|     C
 | |
|   };
 | |
| };
 | |
| const int C = 4;
 | |
| struct D {
 | |
|   A::B : C;
 | |
| };
 | |
| }
 | |
| 
 | |
| enum WithUnderlying : unsigned { wu_value };
 | |
| struct WithUnderlyingBitfield {
 | |
|   WithUnderlying wu : 3;
 | |
| } wu = { wu_value };
 | |
| int want_unsigned(unsigned);
 | |
| int want_unsigned(int) = delete;
 | |
| int check_enum_bitfield_promotes_correctly = want_unsigned(wu.wu);
 |