Предупреждение g ++ при использовании необязательного ключевого слова 'struct'

Если я напишу эту программу:

#include <iostream>

namespace foo {
    struct bar {
        int x;
    };
}

int main (void) {
    struct foo::bar *a = new struct foo::bar;
    delete a;
    return 0;
}

и скомпилирую ее с помощью:

g++ main.cxx -Wall -Wextra

Он выдаст мне следующее предупреждение:

main.cxx: In function ‘int main()’:
main.cxx:10:39: warning: declaration ‘struct foo::bar’ does not declare anything [enabled by default]

Однако, если я извлечу ключевое слово struct после новое ключевое слово:

#include <iostream>

namespace foo {
    struct bar {
        int x;
    };
}

int main (void) {
    struct foo::bar *a = new foo::bar;
    delete a;
    return 0;
}

и скомпилируйте его таким же образом, g ++ не выдаст предупреждений. Почему g ++ выводит это предупреждение, если я использую ключевое слово struct ?

10
задан Adetque 1 June 2011 в 20:52
поделиться