模板 class 专业化和朋友 classes

Template class specialization and friend classes

我处于以下情况:

template<typename T, int N>
class Foo
{
};

// specialization for 0
template<typename T>
class Foo<0>
{
   friend class Foo<T, 1>;
};

也就是说,我需要 Foo<T, 1>Foo<T, 0> 的友元,但我有一个编译器错误。这可能吗?

你的专业有错别字:

template<typename T>
class Foo<T, 0>
{     //  ^^^ <= add this
   friend class Foo<T, 1>;
};