我有一个类(class)模板
template< typename G, int N > class Foo { /* ... */ };
我希望
N=0
的特化成为另一个类的 friend ,但是我不知道它的语法(而且我自己也找不到它)。我试过了:template< typename T >
class Bar {
template< typename G > friend class Foo< G, 0 >;
/* ... */
};
我希望任何类型的G
Foo< G, 0 >
成为class Bar< T >
的 friend 。正确的语法是什么?谢谢!
最佳答案
在C++ 03中,这是不可能的。 C++标准14.5.3/9表示以下内容:
如另一个答案中所述,可能存在一些解决此问题的方法,但是您所要求的特定功能在该标准中不可用。
幸运的是,如今C++ 11得到了很好的支持,并且具有指定模板别名的能力,我们可以实现以下目标:
template <typename, typename> struct X{};
template <typename T>
struct Y
{
template <typename U> using X_partial = X<T, U>;
template <typename> friend class X_partial;
};
关于c++ - 部分专业的模板 friend ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18212329/