以下はすべて、まったく問題のない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)だからである。