我有一个应该接受几个参数的函数,在将所有参数添加到之后*this
,operator+=
它被重载并为一个参数工作。功能看起来像
template <typename T, typename U>
struct are_equal :
std::is_same<typename std::decay<T>::type, U>::type
{};
template<typename T>
template<typename... U>
std::enable_if_t<are_equal<U ..., Object<T>>::value>
Object<T>::addd(U &&... u)
{
// *this += std::forward<U>(u)...;
}
可能我有两个问题。1. 我认为我应该用 更改我的部分代码type_traits
,但我的实验没有给出正确的结果。注释行错误(在哪里operator +=
)
C2893 无法专门化函数模板'enable_if<_Test,_Ty>::type Object::addd(U &&...)' C2672'Object::addd':找不到匹配的重载函数
注释行中字典(?)的问题:
*this += std::forward<U>(u)...;
错误:
C2143 语法错误:缺少 ';' 前 '...'
C2059 语法错误:'...'
C3520 'u':必须在此上下文中展开参数包
Operator+=
适用于一个元素(我敢肯定)。