size_t oder std::size_t



  • Hoi! 😉

    So oft lese ich std::size_t. Aber ist das nicht schwachsinnig?
    Die Typen sind identisch und jeder STL-Header würde doch durch irgendeine C-Abhängigkeit size_t in den globalen Namensraum ziehen.

    Wie haltet ihr es damit?
    Grüße,
    Ethon



  • size_t liegt im Namensbereich std . Wenn man jetzt std mit using namespace globalisiert, kann man size_t auch ohne dem Bereichsauflöser std:: nutzen.

    EDIT: Quatsch, Sorry! ➡ Standard 17.4.3.1.4



  • Nimm std::size_t (bzw. mach vorher ein using ). Wenn du darauf hoffst, dass immer zufällig ein Header eingebunden wird, der size_t im globalen Namespace hat, dann verlässt du dich einfach unnötig auf ein Verhalten, dass sich schon beim nächsten Compilerrelease ändern kann. Gerade beim GCC/libstdc++ sind einige Leute schon darüber gestolpert, dass das Verhalten auf einmal näher am Standard war und die "Wieso? Geht doch!"-Einstellung eben nicht reicht. Außerdem ist es ja nur konsequent, wenn du std::string usw. benutzt auch std::size_t zu benutzen. Warum sollte man da eine Ausnahme machen?



  • rüdiger schrieb:

    Außerdem ist es ja nur konsequent, wenn du std::string usw. benutzt auch std::size_t zu benutzen. Warum sollte man da eine Ausnahme machen?

    Meine IDE behandelt das std:: vor dem size_t wie einen Alien.
    Außerdem hab ich den Drang zwischen std::size_t und size_t zu unterscheiden, wenn ich mich mit C-APIs arbeite.

    Ist es garantiert,dass das klappt:

    void c_func(size_t* size);
    
    std::size_t size;
    c_func(&size);
    

    ?
    Grüße,
    Ethon



  • Ethon schrieb:

    Ist es garantiert,dass das klappt:

    Hast du im von mir geschriebenen Abschnitt im Standard nicht geschaut? Die Antwort: Ja

    EDIT:

    Standard 17.4.3.1.4 schrieb:

    For each type T from the Standard C library, the types ::T and std::T are reserved to the implementation and, when defined, ::T shall be identical to std::T.



  • Ethon schrieb:

    Meine IDE behandelt das std:: vor dem size_t wie einen Alien.

    Man sollte immer die Werkzeuge an seine Arbeitsweise anpassen und nicht umgekehrt. Wenn dir deine IDE im Weg steht, dann nimm eine andere (oder schau zumindest mal in die Einstellungen).


Anmelden zum Antworten