【发布时间】:2018-06-12 03:30:26
【问题描述】:
下面的代码不能编译(见代码下面的错误)。你能解释一下为什么吗?
template <class F, class... Arg>
void for_each_argument(F f, Arg&&... arg)
{
f(std::forward<Arg>(arg...));
}
int main()
{
for_each_argument(
[](const auto& a){std::cout<< a;}, "Aa", 3, 4);
return 0;
}
这是一条错误消息:
7:4:错误:表达式包含未扩展的参数包 '精氨酸'
f(std::forward(arg...));
【问题讨论】:
-
请定义“不工作”。不会编译?不正确的行为(例如崩溃)?
-
请编辑您的问题以解释这段代码应该做什么,实际发生了什么,抛出的错误等。否则,这里的人将不得不检查您的代码,弄清楚它,调试它等等。正如所写,不幸的是,这与“不清楚你在问什么”或“为什么我的代码不起作用”是题外话。
-
f(std::forward<Arg>(arg...));=>(f(std::forward<Arg>(arg)) , ...);如果你使用的是c++17 -
@super 值得回答!这是一个很好的答案,所以如果你回答它会很酷。如果你不这样做,我会自己做:D
-
顺便说一句,试图关闭这个问题的人可能会考虑撤回他们的投票。我认为这个问题不再不清楚了