Есть пустые конструкторы из одной строки, но везде в скобках - PullRequest
0 голосов
/ 12 июня 2019

Я ищу способ, позволяющий формату clang разрешать использование однострочных пустых конструкторов, но везде ставить фигурные скобки.

В идеале я хочу поддержать все эти три случая с помощью одной конфигурации clang.

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

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

void Test::blank()
{
}

Есть ли в любом случае путь к конструкторам особых случаев?Даже возможность иметь пустые функции в одной строке так же, как конструкторы, была бы приемлемой.Но помещать короткие функции в одну строку недопустимо.

1 Ответ

0 голосов
/ 20 июня 2019

Это не решает все проблемы, но решает мой основной случай.

AllowShortFunctionsOnASingleLine: InlineOnly

Это позволит коротким функциям в определениях классов быть одной строкой.

С https://clang.llvm.org/docs/ClangFormatStyleOptions.html

SFS_InlineOnly (в конфигурации: InlineOnly) Только функции слияния, определенные внутри класса. То же, что «inline», за исключением того, что оно не подразумевает «empty»: то есть пустые функции верхнего уровня также не объединяются.

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

Это в сочетании с BreakBeforeBraces: Allman дает мне желаемый результат.

...