考虑这个代码片段:
int main () {
auto first = [&] (auto... one) {
auto faulty = [&] () {
[[maybe_unused]] auto i = (one + ...);
return (one + ...);
};
faulty();
};
first(1);
}
另见 on godbolt .
似乎当我尝试在内部 lambda 中将隐式捕获的参数包 one
扩展两次时,gcc 会提示,但 clang 不会。
请注意,当我明确捕获时,例如 [&one...]
,gcc 不再提示。
对我来说,这看起来像是一个 gcc 错误,但我想得到比我更有经验的人的一些确认,因为我已经在带有可变捕获的 clang 中看到(不同的)错误行为 here .
最佳答案
关于c++ - gcc 与 clang : expanding a captured parameter pack twice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56414328/