如何授予特定的模板友谊

时间:2011-08-09 01:05:50

标签: c++ templates

template<typename T> void fun(const T&); // Lip 657

template<typename T> class Bar {
   // grants access to a single specific instance parametrized by char*

   friend void fun<char*> (char* const &); // case one
   friend void fun<char*> (const char* &); // case two
};

我认为案例是正确的解决方案。

如果有,为什么不是案例二而不是案例一?

1 个答案:

答案 0 :(得分:2)

模板类型参数类似于typedef。修饰符作为一个整体应用于类型,它不像字符串替换那样。

所以你的假设是正确的。 T是指针,fun需要对T的引用,该引用被视为const,第一个版本正确描述了对const指针的引用