Littéral numérique erreur de l'opérateur
Pourquoi ce code:
constexpr float operator "" _deg(long double d) {
//returns radians
return d*3.1415926535/180;
}
static const float ANGLES[] = { -20_deg, -10_deg, 0_deg, 10_deg, 20_deg};
Produire 5 de ces erreurs:
erreur: impossible de trouver le littéral numérique de l'opérateur d'opérateur"" _deg'
Je suis en utilisant GCC 4.7.3. (arm-none-eabi-g++
, avec la -std=c++0x
drapeau).
Quel compilateur et version utilisez-vous?
Mais il échoue sur ideone trop
Ce version du compilateur? défini par l'Utilisateur littéraux n'est pas correctement mis en œuvre jusqu'à ce que gcc 4.7. ideone est à l'aide de gcc 4.5
Mais il échoue sur ideone trop
Ce version du compilateur? défini par l'Utilisateur littéraux n'est pas correctement mis en œuvre jusqu'à ce que gcc 4.7. ideone est à l'aide de gcc 4.5
OriginalL'auteur Eric | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
Il semble que GCC ne pas faire les conversions de type définies par l'utilisateur avec des littéraux, si par exemple le
-10
dans-10_deg
est considéré comme un entier.Ajouter
.0
tous les numéros et il devrait, espérons-le travail:Bien sûr, vous pouvez également ajouter un autre opérateur en fonction de la prise de
int
comme argument.Avez-vous essayé avec compilateur et pas ideones?
Non, mais j'ai essayé quelque chose de similaire et il a semblé résoudre le problème. Vous êtes bouton droit de la GCC n'est pas de faire de la conversion de type ici
OriginalL'auteur Some programmer dude
L'ajout de la définition
.
unsigned long long
intégrale des littéraux ou deslong double
pour virgule flottante littéraux. wikipédiaOriginalL'auteur Eric