具有单行空构造函数,但在其他任何地方都在换行符上大括号

Have single line empty constructors, but braces on newline everywhere else

我正在寻找一种方法使 clang-format 允许单行空构造函数,但在其他任何地方都将大括号放在换行符上。

理想情况下,我想用一个 clang 配置来支持这三种情况。

Test::Test(const std::string &name) : name(name) {}

std::string Test::get_name()
{
    return name;
}

void Test::blank()
{
}

有没有特殊情况构造函数的方法?甚至能够像构造函数一样在一行中使用空函数也是可以接受的。但是将短函数放在一行上是不可接受的。

这并不能解决所有问题,但它解决了我的主要问题。

AllowShortFunctionsOnASingleLine: InlineOnly

这将允许 class 定义中的短函数成为单行。

来自https://clang.llvm.org/docs/ClangFormatStyleOptions.html

SFS_InlineOnly (in configuration: InlineOnly) Only merge functions defined inside a class. Same as “inline”, except it does not implies “empty”: i.e. top level empty functions are not merged either.

class Foo {
  void f() { foo(); }
};
void f() {
  foo();
}
void f() {
}

这与 BreakBeforeBraces 相结合:Allman 给了我想要的结果。