【发布时间】:2021-01-28 23:15:55
【问题描述】:
template <typename T>
struct S {
T myValue;
S(T&);
template <typename... Ts>
S(Ts&&...);
};
假设我想定义被调用的方法外线
S(some, arguments, of, various, types),我将如何定义方法?
对于S(T&),我只是这样做
template <typename T>
S<T>::S(T&){ /* code */ }
,但如果我尝试去做
template<typename T, typename... Ts>
S<T>::S(Ts&&...){ /* code */ }
然后它给了我一个错误:“模板重新声明中的模板参数太多”。
删除 , typename... Ts 会导致关于未定义 Ts 的错误。
当方法有额外的模板参数时,在类/结构之外编写方法主体的正确语法是什么?
【问题讨论】: