2010/08/04 (水) 23:26:09        [qwerty]
以下はすべて、まったく問題のないC++のコードである。

int typedef type ;
int f() { return 0 ; }
int extern f() ;

struct C
{
    int friend f() ;
    void virtual g() {}
} typedef * pointer ;

なぜなら、指定子には順番という概念がないからである。

ただし、指定子と宣言子の違いに注意しなければならない。

int typedef type ;
は問題ないが、

int * typedef type ;
これはエラーである。なぜならば、「*」は、指定子(specifier)ではなく、宣言子(declarator)だからである。