c++ - 外联可变参数模板函数

标签 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&&...args)
{}

int main()
{
    A a("hello");
    return 0;
}

...这是我得到的错误(Clang 3.9 OS X 10):

main.cpp:8:2: error: expected unqualified-id
A<Args...>::A(Args&&...args)
 ^

我需要在某处放置“typename”吗?提前感谢您的帮助!

最佳答案

你写道:

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

但是你的类不是类模板,所以下面是你如何做的

template<typename...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)
{}

关于c++ - 外联可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39440513/

相关文章:

c++ - 您可以传递一个函数以便稍后调用它吗?

javascript - 如何在 Ghost 中找到所有带有特定标签的帖子并遍历它们?

c++ - 在元组的元组中找到一个元组

c++ - Variadic 模板类,从其参数列表中获取特定类型的索引

c++ - 如何编写连接两个函数的函数?

c++ - 如何在同一选项卡中启动具有给定 URL 的浏览器

c++ - R:指向c函数的指针

c++ - 将可变参数模板参数解包到初始化列表中

c++ - 打开窗口时应用程序崩溃 qt

c++ - Variadic 模板双端包解决方法