typedefを用いて定義した型の前方宣言(previous declaration)はどのようにしたらよいですか?

具体的には item.h が次のようになっていて

class Item
{
 // いろいろ
};
typedef std::list<Item> List;

別のヘッダファイル内でこの item.h をincludeせずに List を前方宣言したいのですが、
class List;
とか
typedef struct List;
とかすると型が一致しないと怒られてしまいます。

item.hをインクルードするしかないのでしょうか。
解決法があれば教えてください。