如何将以下函数声明为类的朋友
template <class T>
inline auto func(T & val)
{
//return ...;
}
class A { friend auto func<A>(A & val); }
这合法吗?
是的,你可以从C++14
开始工作。
怎么做?
你可以这样做(see here):
class A;
template <class T>
inline auto func(T& val);
class A
{
friend auto func<A>(A& val);
int j = 6;
};
template <class T>
inline auto func(T& val)
{
return val.j;
}
int main()
{
A a;
return func<A>(a);
}
但是,我同意这些意见:如果您提供了一个我们可以尝试找到答案的确切问题,那么问题就可以得到改善。