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
};
我认为案例是正确的解决方案。
如果有,为什么不是案例二而不是案例一?
答案 0 :(得分:2)
模板类型参数类似于typedef
。修饰符作为一个整体应用于类型,它不像字符串替换那样。
所以你的假设是正确的。 T
是指针,fun
需要对T
的引用,该引用被视为const
,第一个版本正确描述了对const
指针的引用