C ++ "Enumeración de punto flotante"

Estoy buscando una solución que use el estándar C ++ 03 (estoy limitado a usar esta versión del estándar por varios años). Las soluciones para C ++ 11 también son bienvenidas, pero no serán "aceptadas" como respuesta a esta pregunta.

¿Cuál es una forma simple y concisa en la que puedo representar un conjunto de valores de punto flotante constante relacionados como un solo tipo (similar a una enumeración) para garantizar la seguridad de tipos sin incurrir en gastos generales significativos y aún así permitirme operar los valores como flotadores directamente? ?

El resultado final es que me gustaría poder hacer algo como lo siguiente:

enum FloatingPointEnum
{
   VALUE1 = 0.1234f,
   ...
   VALUEN = 0.6789f
};


float SomeFunction(FloatingPointEnum value)
{
    float new_value;
    /* perform some operation using "value" to calculate "new_value" */
    new_value = static_cast<float>(value); // <- a simplistic example
    return new_value;
}

Si bien puedo pensar en varias soluciones, ninguna de ellas es tan limpia / simple / directa como me gustaría y creo que alguien ya debe tener una solución elegante para este problema (aunque no puedo encontrar una en mi búsqueda).

EDITAR:

Me gustaría que la siguiente llamada a SomeFunction con un valor que no se especifica directamente como un valor del tipo enumerado no se compile:

float nonEnumeratedValue = 5.0f
SomeFunction(nonEnumeratedValue);

Respuestas a la pregunta(3)

Su respuesta a la pregunta