gpt4 book ai didi

c++ - '...' 标记调用模板类的模板化方法之前的预期主表达式

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:06 24 4
gpt4 key购买 nike

<分区>

我在模板化类中有一个模板化静态方法,我从模板化函数中调用它。编译失败并显示错误 error: expected primary-expression before '...' token .

这是一个示例代码。它有一些未使用的模板参数,但与我的真实代码完全一样,这些参数很重要。

temp late<typename T>
class Run {
public:
template<typename ...Args>
static void run(Args... args) {}
};

template <typename T, typename ...Args>
void
run2(Args ...args)
{
Run<int>::run<Args...>(args...); // OK
Run<T>::run<Args...>(args...); // Fail on first . in Args...
}

int main() {
run2<int>(1, 2, 3);
return 0;
}

编译错误:

%  g++ -std=gnu++11 -o try try.cc
try.cc: In function 'void run2(Args ...)':
try.cc:13:21: error: expected primary-expression before '...' token
Run<T>::run<Args...>(args...); // Fail on first . in Args...
^
try.cc:13:21: error: expected ';' before '...' token

在 Ubuntu 上使用 gcc 4.8.5。还使用 gcc 6.3 重现

知道发生了什么事吗?工作线(<int >)和失败线(<T>)之间的区别特别令人困惑。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com