如何将可变参数模板函数声明为友元

How to declare a variadic template function as a friend?

本文关键字:函数 声明 友元 参数 变参      更新时间:2023-10-16

如何将可变参数模板函数声明为友元?

例如如下:

template<class T>
class A
{
    friend ??? MakeA ??? ; // What should be placed here ???
    A(T)
    {}
};
template<class T, class... Args>
A<T> MakeA(Args&&... args)
{
    T t(std::forward<Args>(args));
    return A(t);
}

这很简单。它只是一个带有添加friend说明符的模板声明:

template<class T>
class A
{
    template<class T1, class... Args>
    friend A<T1> MakeA(Args&&... args);
    A(T) { }
};