Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 离线可变模板函数_C++_Templates_Variadic Templates - Fatal编程技术网

C++ 离线可变模板函数

C++ 离线可变模板函数,c++,templates,variadic-templates,C++,Templates,Variadic Templates,我需要将声明与可变模板函数的定义分开: struct A { // In-line declaration of function template<typename...Args> A(Args&&...args); }; // Out-of-line definition of function template<typename...Args> A<Args...>::A(Args&&...arg

我需要将声明与可变模板函数的定义分开:

struct A
{
    // In-line declaration of function
    template<typename...Args>
    A(Args&&...args);
};

// Out-of-line definition of function
template<typename...Args>
A<Args...>::A(Args&&...args)
{}

int main()
{
    A a("hello");
    return 0;
}
结构A { //函数的行内声明 模板 A(Args&…Args); }; //函数的越界定义 模板 A::A(Args&&…Args) {} int main() { A(“你好”); 返回0; } …下面是我得到的错误(Clang 3.9 OS X 10):

main.cpp:8:2:错误:应为非限定id
A::A(Args&&…Args)
^
我需要把“typename”放在什么地方吗?提前谢谢你的帮助

你写道:

template<typename...Args>
A<Args...>::A(Args&&...args)
{}
模板
A::A(Args&&…Args)
{}
但是你的类不是一个类模板,下面是你如何做到这一点的

template<typename...Args>
A::A(Args&&...args)
{}
模板
A::A(Args&&…Args)
{}


即使它是一个类模板,下面的示例是如何处理类模板的模板构造函数

template<typename... T>
struct A
{
    // In-line declaration of function
    template<typename...Args>
    A(Args&&...args);
};

// Out-of-line definition of function
template<typename... T>
template<typename... Args>
A<T...>::A(Args&&...args)
{}
模板
结构A
{
//函数的行内声明
模板
A(Args&…Args);
};
//函数的越界定义
模板
模板
A::A(Args&&…Args)
{}
您写道:

template<typename...Args>
A<Args...>::A(Args&&...args)
{}
模板
A::A(Args&&…Args)
{}
但是你的类不是一个类模板,下面是你如何做到这一点的

template<typename...Args>
A::A(Args&&...args)
{}
模板
A::A(Args&&…Args)
{}


即使它是一个类模板,下面的示例是如何处理类模板的模板构造函数

template<typename... T>
struct A
{
    // In-line declaration of function
    template<typename...Args>
    A(Args&&...args);
};

// Out-of-line definition of function
template<typename... T>
template<typename... Args>
A<T...>::A(Args&&...args)
{}
模板
结构A
{
//函数的行内声明
模板
A(Args&…Args);
};
//函数的越界定义
模板
模板
A::A(Args&&…Args)
{}