繁体   English   中英

gcc vs clang:将捕获的参数包扩展两次

[英]gcc vs clang: expanding a captured parameter pack twice

考虑以下代码片段:

int main () {
    auto first = [&] (auto... one) {
        auto faulty = [&] () {
            [[maybe_unused]] auto i = (one + ...);
            return (one + ...);
        };
        faulty();
    };
    first(1);
}

另请参阅“ godbolt”

看来,当我尝试展开暗中拍摄参数包one两次内部拉姆达内,海湾合作委员会抱怨,但铿锵没有。 请注意,当我显式捕获时,例如[&one...] ,gcc不再抱怨。

对我来说,这看起来像是gcc的错误,但是我想请比我更有经验的人做些确认,因为我已经在这里看到了(各种)虫虫行为,并在这里使用了可变参数捕获。

这是GCC 9.人们回归报道

GCC 8可以很好地编译代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM