<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">