| 
					
				 | 
			
			
				@@ -178,12 +178,13 @@ void EnumGenerator::GenerateSymbolImports(io::Printer* printer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   map<string, string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vars["nested_name"] = descriptor_->name(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vars["classname"] = classname_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vars["constexpr"] = options_.proto_h ? "constexpr " : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(vars, "typedef $classname$ $nested_name$;\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (int j = 0; j < descriptor_->value_count(); j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     vars["tag"] = EnumValueName(descriptor_->value(j)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      "static const $nested_name$ $tag$ = $classname$_$tag$;\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "static $constexpr$const $nested_name$ $tag$ = $classname$_$tag$;\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   printer->Print(vars, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -237,6 +238,7 @@ void EnumGenerator::GenerateDescriptorInitializer( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void EnumGenerator::GenerateMethods(io::Printer* printer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   map<string, string> vars; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   vars["classname"] = classname_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vars["constexpr"] = options_.proto_h ? "constexpr " : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (HasDescriptorMethods(descriptor_->file())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -287,7 +289,7 @@ void EnumGenerator::GenerateMethods(io::Printer* printer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (int i = 0; i < descriptor_->value_count(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       vars["value"] = EnumValueName(descriptor_->value(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       printer->Print(vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        "const $classname$ $parent$::$value$;\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "$constexpr$const $classname$ $parent$::$value$;\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printer->Print(vars, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       "const $classname$ $parent$::$nested_name$_MIN;\n" 
			 |