模板类专业化和朋友类

Nic*_*ick 0 c++ templates friend c++11

我遇到以下情况:

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

// specialization for 0
template<typename T>
class Foo<0>
{
   friend class Foo<T, 1>;
};
Run Code Online (Sandbox Code Playgroud)

也就是说,我需要那Foo<T, 1>是朋友Foo<T, 0>,但我有编译错误.这可能吗?

Axa*_*alo 7

您的专业化中有一个错字:

template<typename T>
class Foo<T, 0>
{     //  ^^^ <= add this
   friend class Foo<T, 1>;
};
Run Code Online (Sandbox Code Playgroud)