如何声明一个可变参数模板函数作为朋友? [英] How to declare a variadic template function as a friend?

查看:218
本文介绍了如何声明一个可变参数模板函数作为朋友?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to declare a variadic template function as a friend?

例如如下:

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 说明符的模板声明:

It's quite straightforward. It's simply a template declaration with the added friend specifier:

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

    A(T) { }
};

这篇关于如何声明一个可变参数模板函数作为朋友?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆