operator"" _GROSS reserviert?



  • Ist

    int operator "" _GROSS(long long);
    

    erlaubt oder ist dieser Bezeichner reserviert?



  • Ist reserviert. Denk z.B. an Präprozessor-Makros in der Standardlibrary.



  • Darum einfach Mal abgewöhnen _Großbuchstabe oder __kleinbuchstabe im global namespace zu nutzen, das ist schließlich grundsätzlich reserviert. Sehe eh nicht den Sinn.

    Edit: Ups, hab das nicht als Suffix verstanden, dann könnte alles anders sein, siehe nächster Post.



  • Da gibt es im Standard einen Abschnitt über reservierte Bezeichner für suffixe:

    17.6.4.3.5 User-defined literal suffixes [usrlit.suffix]
    1 Literal suffix identifiers that do not start with an underscore are reserved for future standardization.

    Heißt der bezeichner müsste einen Unterstrich gefolgt von einem Kleinbuchstaben in einem nicht-globalen namespace haben.

    Oder habe ich da etwas falsch verstanden?



  • 17.6.4.3.2 Global names
    Certain sets of names and function signatures are always reserved to the implementation:
    — Each name that contains a double underscore _ _ or begins with an underscore followed by an uppercase letter (2.12) is reserved to the implementation for any use.
    — Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace



  • Lustig ist ja, dass z.B.

    1234_GROSS
    

    nichts mit dem der Identifier _GROSS zu tun hat.

    Es scheitert nur an der Deklaration operator"" _GROSS . Das mit dem Makro ist leider einleuchtend. Danke an euch.


Anmelden zum Antworten