我使用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上不可能看到,即使高亮显示空白)。
这是我的.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上。
1条答案
按热度按时间ffscu2ro1#
我不知道这些空格是从哪里来的
requires-expression的主体与关键字
requires
对齐;但是,目前还没有禁用对齐方法。这是clang-format中的一个bug/缺陷,如https://github.com/llvm/llvm-project/issues/56283中所述。
然而,fix for this几乎要被合并到LLVM main中了。