请考虑以下代码段:
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错误,但是我想从比我更有经验的人那里得到一些确认,因为我已经看到了可变参数捕获here在叮当声中的(不同)错误行为。