C++ “À Virgule Flottante " Enum”

Je suis à la recherche d'une solution en utilisant le C++03 standard (je suis limité à l'utilisation de cette version de la norme pour plusieurs années encore). Solutions pour le C++11 sont également les bienvenus, mais ne sera pas "accepté" que la réponse à cette question.

Ce qui est une simple, concis que je peux représenter un ensemble de constantes de valeurs à virgule flottante comme un seul type (similaire à un enum) pour assurer la sécurité du type sans encourir des frais généraux et encore me permettre d'opérer sur les valeurs comme des flotteurs directement?

Le résultat final est que j'aimerais être capable de faire quelque chose comme ce qui suit:

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;
}

Alors que je peux penser à plusieurs solutions, aucune n'est aussi propre/simple/simple que je le voudrais et je me dis que quelqu'un doit déjà avoir une solution élégante à ce problème (pourtant, je n'arrive pas à en trouver un dans ma recherche).

EDIT:

Je voudrais l'appel suivant à SomeFunction avec une valeur qui n'est pas spécifié directement une valeur dans le type énuméré à l'échec de compilation:

float nonEnumeratedValue = 5.0f
SomeFunction(nonEnumeratedValue);
de sécurité du type <-> "encore me permettre d'opérer sur les valeurs comme des flotteurs directement" Que voulez-vous dire? Si il y a une conversion implicite de ce type, pour float, il ne serait pas de type sécurisé. Si il n'y a rien, vous ne pouvez pas manipuler comme des floats directement. Pourriez-vous donner quelques exemples?
Des exemples de code que vous souhaitez ne parviennent pas à compiler en raison de la sécurité de type serait utile.

OriginalL'auteur statueuphemism | 2013-10-16