<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59412>59412</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-format Allow for short statement braces in requires clause
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
marstaik
</td>
</tr>
</table>
<pre>
With custom brace styles to always break, there is no way to get one-liner requires lines to exist. There probably should be another option for `AllowShortRequiresExpressionsOnASingleLine` or something similar.
IE:
```cpp
template<class T>
concept meta_named_type_ = requires( T t ) {
meta_type_<T>;
is_base_of_type<EMetaTag::NamedType>( t.meta_tag );
{
t.name
} -> string_;
{
t.nested_name_specifier
} -> string_;
{
t.metadata
} -> map_;
};
```
should preferably be:
```cpp
template<class T>
concept meta_named_type_ = requires( T t ) {
meta_type_<T>;
is_base_of_type<EMetaTag::NamedType>( t.meta_tag );
{ t.name } -> string_;
{ t.nested_name_specifier } -> string_;
{ t.metadata } -> map_;
};
```
.clang-format 16 config:
```
StatementMacros: []
Language: Cpp
Standard: c++20
ColumnLimit: 120
IndentWidth: 4
TabWidth: 4
AccessModifierOffset: -4
UseTab: AlignWithSpaces
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
PointerAlignment: Left
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: Right
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros: None
AlignEscapedNewlines: Left
AlignOperands: AlignAfterOperator
AlignTrailingComments: false
PackConstructorInitializers: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: Never
AllowShortBlocksOnASingleLine: Empty
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
AllowAllArgumentsOnNextLine: false
#AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: Both
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: Never
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: false
BeforeElse: true
BeforeLambdaBody: true
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeConceptDeclarations: true
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
BreakStringLiterals: false
CompactNamespaces: false
Cpp11BracedListStyle: true
FixNamespaceComments: true
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: AfterExternBlock
IndentGotoLabels: false
IndentPPDirectives: None
IndentRequires: false
IndentWrappedFunctionNames: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 3
SpacesInAngles: Never
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: true
SpacesInContainerLiterals: true
SpacesInParentheses: true
SpacesInSquareBrackets: false
MaxEmptyLinesToKeep: 1
SeparateDefinitionBlocks: Always
RequiresClausePosition: OwnLine
IndentRequiresClause: false
RequiresExpressionIndentation: OuterScope
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWMtu4zrSfhp5QySwpdiJF174lh_GcS5_7EZjVkGJKsmcUKQOSXXiefoBScuSJavTOMsBGuqY9dWFdZdAa5YJxFkwXgTj1QBKc5BqloPSBtjHIJbJcfaTmQOhpTYyJ7ECikSbI0dNjCTAP-GoSawQPoJwScwBFRKmiZDkE44WkqEhUuANZwIVUfh3yRRqYn86EfjFtLkle8dZKBlDzI9EH2TJExIjASGtVCILw6QgqVQkmAznnMvP3UEq83aSuP4qFGrNpNAvYr5jIuO4ZQKDyZBIRbTM0RyYyIhmOeOgboPhKhjO_XOzDqLTn8Fk6P_RovAnBvOCg8EgWlIOWpN9EK09iUpBsTAkRwPvAnJM3s2xwHcSRKvzXYPwgeyJIUE4JcH9otI7dUwOHkRLJzOqiUy_x6DxXaYOEkTL9RMa2ENmLY3mz1bZ3lHWVoG59eIgs3oakk7ymoqD4dTcWmsb1BW5CaI10UYxkb03LelyojaYuOu-6wIpSxmqfybK2pyAgS53DkWD9X5V_13Fp3nBU7oUClNULoFirCP6Px5X4oNJvvE86YncH_BVYSL_MDy3lIPIblKpcjBkNCFUipRl3ZrzP3cGDOYozBNQJXUQzYlvUE2ZWxBZCZkNM1lWId0ZEAmoxB7SIFwE4SI8CV1KXuZiy3JmLHVUnW9EgsL8ZIk52PM7f7qHuH00pxS1fpKJ89pLmmp0km5O9B8a9xDbkzlnmbBtc1cARV3pF9qokhqpNoIZBpz9B9V17UspDBMl2I53HeGfr5IJg8rps_6ygC2m5mSwPZ6nBtVLgWKhgH54i-euay9c024glYLjS7pzRpY2v6M5eWPZoSnO3gJpadgvnLvhYdU65LMUeB24YOaRIU--ga2QclDuzt8g67RoYdaaQoHJM3668XLFHS8FKhDelAv_KDBSNYB7BYwzkS1lfr5iClyf1L0C_bgeUW8X_sKztGpSLUHjFmLkrQF1KbnGr0WZ_yH0sRTUdEdfNCcbYV3xIvixzbNJz3XWZbt6gQWX9KOLXeeF6UjfQh4n8KdgKYtvbnrOWBewNzSlEr5NXmbBGbfAVCp8KrmxccSd620uOEaVXfj-NAzaWfivqn6dtXPO5yorTz57xi9zxdggjCpwT4r0slZ8r6AgR2OhacOifpXuuWDC5uXZwhboRK5l9wjx1bqUXArbwJiwjZospDlc4Gon29biq23p1sQKABR_KigKL8GfEkKIC-G5GlpW1AA7ky_jVdOkMErycwK3UvaMsyXUEuHOq3rpEW-HsLa9u4fue-Q1wT9Ev9T1l0ElXBF1Ed6TSzD0cMUhnrq2Zz2cvt4WMjm2EJ7888B4O2kss58udQBb5F3BmXEl2--xGvOGVPrZ24focWw3o5gAdazactXq64nTYVj6ha1dvbWKBnaPqiO9BfxNa6_05Tk0GDbigIoZEBS3TJt-oO9DW2ZQAW-7fCnzAqg5e6lDL4rRyAUrsVp29j3s0vpH9nXmbo6utq993G0N-qbeUlST_cC6FOGprXTupHgD-n_SyFpQR8_r64oppHa0t6a6p1eveFeZXYfBpMpPd_urjW0nlfmhmcj6k-QEtM7zbcZ5eAk-oA2JNWQrM0aBP8t-SDVa_sLj56k-OjglS5Gc1rn_L4G7HdNZt8IUSm4aYJ9YdTH0JHID28qbaxacgJcJ72ZAr9RGzv8e-AoKvavbfVt3sG8gMlyAxuRRKrsX_F707u8S_AD6wM7Ac7iNcJ3nnKc9dGejOaDuZI9f4k-t48pWGDVhGzG3K0x7CayIdUJ9p29jF96E2SSFyznX8oNHGmACVbOtdGEtlV3Ab53pn0_w5dxldxC9l38hFu5t6qJ-sLDlhStMmXA3qHuM37ia6Kq4lxxKja9Ss2rMvHwKt-pc6QQe3LKw-yXIM8FZYGlnN5UFXn3tHCSzKJlGUxjgbDS5H47voruHyeAwg2E6pJjE43hMp9NpHIbjMd4_0PQeI7wbjwdsFg7DcBQOH8JoPAont-EUJuMJjuPJaPQwjkfB3RBzYPyW81_5rVTZgGld4mw8vRuFA-5ao_sIF4YCP4kjBmEYjFcDNbM8N3GZ6eBuyJk2upZimOE4u3i7diuk-0ym7WpNdJU7_uOdJkzUX-Go8-OgVHx2MKawIQrCxyB8zJg5lPEtlXkQPlp1p_9uCiX_jdQE4aMzUgfho7vEfwMAAP__Tf6a8g">