外联可变参数模板函数
Out-of-line variadic template function
我需要将可变参数模板函数的声明与定义分开:
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)
{}
但是您的 class 不是 class 模板,所以下面是您的做法
template<typename...Args>
A::A(Args&&...args)
{}
即使它是 class-模板,下面的示例也是您如何处理 class-模板 的模板化构造函数
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)
{}
我需要将可变参数模板函数的声明与定义分开:
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)
{}
但是您的 class 不是 class 模板,所以下面是您的做法
template<typename...Args>
A::A(Args&&...args)
{}
即使它是 class-模板,下面的示例也是您如何处理 class-模板 的模板化构造函数
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)
{}