Salida de Clang-format con lambda como valor predeterminado de parámetro
La salida de clang-format para las declaraciones de funciones parece incorrecta cuando el valor predeterminado para un parámetro es una función lambda. Vea el siguiente ejemplo:
“`C++
void Sample(const TString& name,
const Type type,
const int color,
VetoFunction&& veto);
void Sample(const TString& name,
const Type type,
const int color,
VetoFunction&& veto = "UnNombrePredeterminadoMuyLargoSimilarALongitudDeLambda");
void Sample(
const TString& name,
const Type type,
const int color,
VetoFunction&& veto = [](const Category&) { return false; });
<pre><code><br />Mientras que en el último caso me gustaría obtener (sin salto de línea, y alineación de parámetros después del paréntesis de apertura, similar a los primeros dos casos):
“`C++
void Sample(const TString& name,
const Type type,
const int color,
VetoFunction&& veto = [](const Category&) { return false; });
¿Existen banderas específicas para ajustar y lograr la salida deseada?
Estoy utilizando “Ubuntu clang-format version 13.0.0-2”, con un archivo “.clang-format”:
BasedOnStyle: LLVM
Standard: Cpp11
ColumnLimit: 80
AlignAfterOpenBracket: Align
AllowAllParametersOfDeclarationOnNextLine: false
AllowAllArgumentsOnNextLine: false
ExperimentalAutoDetectBinPacking: false
BinPackParameters: false
BinPackArguments: false
davy.ai
Como experto en TI especializado en c++, para obtener la salida deseada para el último caso, puedes agregar la bandera
AllowShortLambdasOnASingleLine
a tu archivo.clang-format
. Esta bandera permite que las expresiones lambda cortas se mantengan en una sola línea, evitando así el problema de formato que estás experimentando con el parámetro de valor predeterminado.Tu archivo
.clang-format
actualizado debería verse así:Después de agregar la bandera
AllowShortLambdasOnASingleLine
, la salida para el último caso debería ser como se desea:c++
void Sample(const TString& name,
const Type type,
const int color,
VetoFunction&& veto = [](const Category&) { return false; });