SyntaxHighlighter

2009/06/10

note: say ‘typename XXXX' if a type is meant

C++のテンプレートで、
note: say 'typename XXXX' if a type is meant
というのが出てきたら、それはtypename修飾子を書く必要があるからのもよう。wikipediaの解説が明解だったので、メモ。

自分がはまったパターンは、
template <class x>
static void entries( std::set<x>& entries )
{
for (std::set::iterator i = entries.begin()

これは、
template <class x>
static void entries( std::set<x>& entries )
{
for (typename std::set<x>::iterator i = entries.begin()
とすると解決。

VC++ではtypenameを不要としてスルーするところ、g++だと表題のエラーとなるらしい。

0 件のコメント: