即使使用允许Shortlambdasonasinglineleline,Short Lambda被Clang-Format分开

发布于 2025-02-10 13:45:12 字数 1336 浏览 1 评论 0原文

我有此代码块:

int main() {
    SomeType something1(
        [](const Input& i) -> Output { return Output {1, 2}; },
        [](const Input& i) -> Output { return Output {1, 2}; }
    );

    SomeType something2(
        [](const Input& i) -> Output { return Output (1, 2); },
        [](const Input& i) -> Output { return Output (1, 2); }
    );
}

当我尝试使用以下设置clang-format时:

AlignAfterOpenBracket: Align
AllowShortBlocksOnASingleLine: Always
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All

它会产生此输出(请注意somets of sosity1 and sosity2 get get格式化的方式不同):

int main() {
  SomeType something1(
      [](const Input &i) -> Output {
        return Output{1, 2};
      },
      [](const Input &i) -> Output {
        return Output{1, 2};
      });

  SomeType something2([](const Input &i) -> Output { return Output(1, 2); },
                      [](const Input &i) -> Output { return Output(1, 2); });
}

我将问题隔离到something 1中的支撑初始机。

  • 如何使clang-format输出something1something 2> sosity2的样式> sosity2
  • 为什么clang-format解析/对其进行不同? (为了我自己的理解)

I have this code block:

int main() {
    SomeType something1(
        [](const Input& i) -> Output { return Output {1, 2}; },
        [](const Input& i) -> Output { return Output {1, 2}; }
    );

    SomeType something2(
        [](const Input& i) -> Output { return Output (1, 2); },
        [](const Input& i) -> Output { return Output (1, 2); }
    );
}

And when I try to clang-format with these settings:

AlignAfterOpenBracket: Align
AllowShortBlocksOnASingleLine: Always
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All

It produces this output (note that something1 and something2 get formatted differently):

int main() {
  SomeType something1(
      [](const Input &i) -> Output {
        return Output{1, 2};
      },
      [](const Input &i) -> Output {
        return Output{1, 2};
      });

  SomeType something2([](const Input &i) -> Output { return Output(1, 2); },
                      [](const Input &i) -> Output { return Output(1, 2); });
}

I've isolated the issue to the brace initialiser in something1.

  • How do I make clang-format output both something1 and something2 in the style of something2
  • Why is clang-format parsing/treating them differently? (For my own understanding)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文