sizeof für Array dessen Größe von template Parameter bestimmt ist



  • Hallo,

    eine Frage an die C++ Experten. Ist folgender Code wirklich nicht C++ Standard-konform, oder spielt mir mein (Elsa) C++ Parser/Type-Checker einen Streich:

    template <int SIZE>
      class Foo {
        private:
          int _x[SIZE];    
        public:
          Foo()
          {
            memset(_x,0,sizeof(_x));
          }
      };
    

    Gcc übersetzt das anstandslos, Elsa meckert, dass sizeof nicht geht "of a sizeless array". In dem Standarddokument was ich habe steht meines Erachtens nichts unter sizeof, was das verbietet, oder? Ich müsste das genau wissen.

    (dass ich hier auch ohne weiteres: memset(_x,0,sizeof(int)*SIZE) schreiben könnte ist mir klar)

    Vielen Dank für jede Hilfe im Voraus!



  • Für einen statischen Array ist sizeof so definiert, wie du es haben willst und sollte d.h. standardknformes C++ sein 😉



  • Vielen Dank für die schnelle Antwort, dann macht wohl Elsa an der Stelle unzureichendes checking.


Anmelden zum Antworten