如何授予特定模板友谊

How to grant specific template friendship

本文关键字:友谊 何授予      更新时间:2023-10-16
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
};

我认为情形一是正确的解决方案。

如果有,为什么不是情况二而不是情况一?

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

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