- #include <iostream> 
- #include <iomanip> 
-   
- enum class EnumClass { A, B = 4, C = 9, D = 60 }; 
-   
- template <int I> struct check_enum { static const bool value = false; }; 
- template <> struct check_enum<static_cast<int>(EnumClass::A)> { static const bool value = true; }; 
- template <> struct check_enum<static_cast<int>(EnumClass::B)> { static const bool value = true; }; 
- template <> struct check_enum<static_cast<int>(EnumClass::C)> { static const bool value = true; }; 
- template <> struct check_enum<static_cast<int>(EnumClass::D)> { static const bool value = true; }; 
-   
- template <int I> constexpr bool is_value_valid = false; 
- template <> constexpr bool is_value_valid<static_cast<int>(EnumClass::A)> = true; 
- template <> constexpr bool is_value_valid<static_cast<int>(EnumClass::B)> = true; 
- template <> constexpr bool is_value_valid<static_cast<int>(EnumClass::C)> = true; 
- template <> constexpr bool is_value_valid<static_cast<int>(EnumClass::D)> = true; 
-   
- int main(int, char **) 
- { 
-     static_assert(check_enum<0>::value, "invalid enum value"); // ok! 
-     static_assert(check_enum<1>::value, "invalid enum value"); // compile error 
-   
-     static_assert(is_value_valid<0>, "invalid enum value"); // ok! 
-     static_assert(is_value_valid<1>, "invalid enum value"); // compile error 
-   
-     return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCmVudW0gY2xhc3MgRW51bUNsYXNzIHsgQSwgQiA9IDQsIEMgPSA5LCBEID0gNjAgfTsKCnRlbXBsYXRlIDxpbnQgST4gc3RydWN0IGNoZWNrX2VudW0geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgY2hlY2tfZW51bTxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6QSk+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgY2hlY2tfZW51bTxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6Qik+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgY2hlY2tfZW51bTxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6Qyk+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgY2hlY2tfZW51bTxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6RCk+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwoKdGVtcGxhdGUgPGludCBJPiBjb25zdGV4cHIgYm9vbCBpc192YWx1ZV92YWxpZCA9IGZhbHNlOwp0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgYm9vbCBpc192YWx1ZV92YWxpZDxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6QSk+ID0gdHJ1ZTsKdGVtcGxhdGUgPD4gY29uc3RleHByIGJvb2wgaXNfdmFsdWVfdmFsaWQ8c3RhdGljX2Nhc3Q8aW50PihFbnVtQ2xhc3M6OkIpPiA9IHRydWU7CnRlbXBsYXRlIDw+IGNvbnN0ZXhwciBib29sIGlzX3ZhbHVlX3ZhbGlkPHN0YXRpY19jYXN0PGludD4oRW51bUNsYXNzOjpDKT4gPSB0cnVlOwp0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgYm9vbCBpc192YWx1ZV92YWxpZDxzdGF0aWNfY2FzdDxpbnQ+KEVudW1DbGFzczo6RCk+ID0gdHJ1ZTsKCmludCBtYWluKGludCwgY2hhciAqKikKewogICAgc3RhdGljX2Fzc2VydChjaGVja19lbnVtPDA+Ojp2YWx1ZSwgImludmFsaWQgZW51bSB2YWx1ZSIpOyAvLyBvayEKICAgIHN0YXRpY19hc3NlcnQoY2hlY2tfZW51bTwxPjo6dmFsdWUsICJpbnZhbGlkIGVudW0gdmFsdWUiKTsgLy8gY29tcGlsZSBlcnJvcgoKICAgIHN0YXRpY19hc3NlcnQoaXNfdmFsdWVfdmFsaWQ8MD4sICJpbnZhbGlkIGVudW0gdmFsdWUiKTsgLy8gb2shCiAgICBzdGF0aWNfYXNzZXJ0KGlzX3ZhbHVlX3ZhbGlkPDE+LCAiaW52YWxpZCBlbnVtIHZhbHVlIik7IC8vIGNvbXBpbGUgZXJyb3IKCiAgICByZXR1cm4gMDsKfQ==
				
				
				
				
				
			 
			
				
			
			
				
	
		
	
	
	prog.cpp: In function 'int main(int, char**)':
prog.cpp:15:5: error: static assertion failed: invalid enum value
     static_assert(check_enum<1>::value, "invalid enum value"); // compile error
     ^