gpt4 book ai didi

c++ - clang-format 过度缩进概念

转载 作者:行者123 更新时间:2023-12-05 05:41:02 25 4
gpt4 key购买 nike

我正在使用 clang-format-14 来格式化我的 C++ 代码。我为类似于 iostream 对象的缓冲区类写了一个概念,我希望它看起来像这样:

template <typename T>
concept Data = requires(T & t, Buffer & buffer) {
{ buffer << t } -> std::same_as<Buffer &>;
{ buffer >> t } -> std::same_as<Buffer &>;
};

但是当我使用 clang-format-14 格式化文件时,我得到的是:

template <typename T>
concept Data = requires(T & t, Buffer & buffer) {
{ buffer << t } -> std::same_as<Buffer &>;
{ buffer >> t } -> std::same_as<Buffer &>;
};

我不知道空格是从哪里来的。

大括号内的前两行保留了前导制表符(在 StackOverflow 上看不到,即使突出显示了空白)。这三行每行缩进了 15 个空格。

这是我的.clang-format 文件:

# Pointers and references
PointerAlignment: Middle

# Indentation
UseTab: ForIndentation
IndentWidth: 2
TabWidth: 2
AccessModifierOffset: -2

# That weird function inlining
AllowShortFunctionsOnASingleLine: None

# Breaking
BreakBeforeBraces: Attach
AlignAfterOpenBracket: BlockIndent
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon

# Namespaces
NamespaceIndentation: All
FixNamespaceComments: true

IndentRequires 选项不会影响此行为(显然 BreakBeforeConceptDeclarations 也不会)。尽管有趣的是 BreakBeforeConceptDeclarations 没有任何效果,并且无论哪种方式都会导致损坏的概念声明。

我知道的样式选项列在 this page 上.

最佳答案

I have no idea where the spaces are coming from

requires 表达式的主体与关键字 requires 对齐;但是目前没有办法禁用该对齐。

这是 clang 格式中的错误/缺陷,如 https://github.com/llvm/llvm-project/issues/56283 中所述.

fix for this , 然而,接近被合并到 LLVM 主。即使那样,此修复程序适用的早期版本也将是 clang-format 16

关于c++ - clang-format 过度缩进概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72330097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com