名前修飾
もっと複雑な例を挙げる。実際に用いられている名前修飾を見てみよう。GNU GCC 3.x系は次のクラス例をどのように修飾するだろうか。修飾されたシンボルはそれぞれの識別子の下に表示されている。
ここでの名前修飾スキームは比較的単純である。修飾された名前は全て _Z で始まる。アンダースコアに大文字を続けたものは、CおよびC++では処理系のために予約済みの識別子であることに注意されたい。従って、ユーザー識別子とぶつかることはない(ものとみなせる)。ネストされた名前(名前空間とクラスの両方)に対して、Nを付け、次いで <長さlength, 識別子id> のペアを付ける(「長さ」は後続の識別子の長さ)。最後にEを付ける。例えば、wikipedia::article::formatは
となる。
関数の場合は、続いて型情報が付加される。format()は void 関数なので、単にvを付ける。よって、
となる。
print_toの場合は、標準的な型として std::ostream(あるいは、もっと正確には std::basic_ostream<char, char_traits<char> >)が用いられ、これには特殊な別名 So がある。よって、この型に対する参照はRSoとなる。名前の完成形は以下となる。