【问题标题】:How to declare a variadic template function as a friend?如何将可变参数模板函数声明为朋友?
【发布时间】:2014-02-15 03:46:03
【问题描述】:

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

例如如下:

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

【问题讨论】:

    标签: c++ templates c++11 variadic-templates friend-function


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 2011-05-01
      • 2011-03-18
      相关资源
      最近更新 更多