Можно ли объявить функцию шаблона с типом возвращаемого значения 'auto' как друга класса? - PullRequest
0 голосов
/ 07 сентября 2018

Как объявить следующую функцию как друга класса

template <class T>
inline auto func(T & val)
{
    //return ...;
}

class A { friend auto func<A>(A & val); }

1 Ответ

0 голосов
/ 07 сентября 2018

Законно ли это?

Да, вы можете заставить его работать с C++14 и далее.

Как это сделать?

Вы можете сделать это так ( см. Здесь ):

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);
}

Однако я согласен с комментариями: вопрос мог бы быть улучшен, если бы вы предоставили точную проблему, для которой мы могли бы попытаться найти ответ.

...