main.cpp compiles without trouble. so enum foo constants are automatically converted to 'int' i would like to prevent that. how can it do $ cat main.cpp enum foo { FOO1, FOO2 }; main() { int val = FOO1; if( val ); }