RapidXML でのコンパイルエラー - Life like a clown で問題になっていた事がようやく解決できたのでメモ. 本題に入る前に.C++ では,typename キーワードは 2 通りの使い方があります.一つはテンプレート引数として 「型」を取ることを宣言する場合で,もう一つはテンプレートクラス内において,後続する記述が「型名」である事を明示する場合です. typename には、もう一つ、後続する識別子が 「型名」であることを明示するという重要な働きがある。 ・・・(中略)・・・ template<class T> class Foo { public: void foo() { T::value_type *p; } }; ここで太字にした文は、ポインタ p の宣言ではなくて、 T::value_type と p の乗算とみなされてしまう。 このような時には、プログラ