C defined a way to declare enum(or enum type) and enum constants. but the problem here is namespace pollution due to enum constants. I guess that why they came up with scoped enum to make enum behave like class types and enum constants are scoped with ::

#include <iostream>
#include <utility>

using namespace std;
enum
{
    ONE,
    TWO
} e1;

enum class senum
{
    ONES,
    TWOS
};
int main()
{
    e1 = ONE;

    senum e2 = senum::ONES;
}