是否可以将 'auto' return 类型的模板函数声明为 class 的友元?

Is it possible to declare a template function with 'auto' return type as a friend of a class?

如何将以下函数声明为class

的友元
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);
}

不过,我同意评论:如果您提供了一个我们可以尝试找到答案的确切问题,问题可能会得到改进。