Numerisches literal-operator-Fehler
Warum funktioniert dieser 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};
Produzieren 5 dieser Fehler:
Fehler: unable to find numerisches literal operator "operator"" _deg'
Bin ich mit GCC 4.7.3. (arm-none-eabi-g++
mit der -std=c++0x
flag).
- Was compiler und version benutzt du?
- Aber es scheitert an ideone zu
- Welche version des Compilers? Anwender-definierte Literale nicht ordnungsgemäß umgesetzt, bis die gcc-4.7. ideone ist mit gcc 4.5
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es GCC nicht Typkonvertierungen durch Anwender-definierte Literale, also z.B. die
-10
im-10_deg
ist als eine ganze Zahl sein.Hinzufügen
.0
alle Nummern, und es sollte hoffentlich funktionieren:Natürlich können Sie auch einen anderen operator-Funktion, die
int
als argument.Hinzufügen der definition
macht es Arbeit.
unsigned long long
für Integrale Literale oderlong double
für Fließkomma-Literale. wikipedia