<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - clang-format splits function pointer in half"
   href="https://bugs.llvm.org/show_bug.cgi?id=48659">48659</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>clang-format splits function pointer in half
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>11.0
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Formatter
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>barry.revzin@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>djasper@google.com, klimek@google.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Here is a complete header:

template <typename R, typename... Args>
struct C { 
    R (*invoker)(void*, Args&&...);
};

which formats as:

$ clang-format wat.h 
template <typename R, typename... Args>
struct C {
    R (*invoker)
    (void*, Args&&...);
};

That should definitely stay on one line. 

My current .clang-format is:

AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
AlignOperands: false
AllowAllParametersOfDeclarationOnNextLine: false
AlwaysBreakBeforeMultilineStrings: false
BasedOnStyle: Google
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakConstructorInitializersBeforeComma: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
IncludeCategories:
- Priority: 2
  Regex: ^"(llvm|llvm-c|clang|clang-c)/
- Priority: 3
  Regex: ^(<|"(gtest|isl|json)/)
- Priority: 1
  Regex: .*
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 1
PenaltyReturnTypeOnItsOwnLine: 60
ReflowComments: false
SortIncludes: false
SpacesBeforeTrailingComments: 1
TabWidth: 8
UseTab: Never
## Other available options and their default values:
# AlignConsecutiveAssignments: false
# AlignConsecutiveBitFields: false
# AlignConsecutiveDeclarations: false
# AlignConsecutiveMacros: false
# AlignEscapedNewlines: Right
# AlignTrailingComments: false
# AllowAllArgumentsOnNextLine: true
# AllowAllConstructorInitializersOnNextLine: true
# AllowShortBlocksOnASingleLine: Empty
# AllowShortCaseLabelsOnASingleLine: false
# AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLambdasOnASingleLine: All
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: Yes
# BinPackArguments: true
BraceWrapping:
#   AfterCaseLabel: false
   AfterClass: false
#   AfterControlStatement: Never
#   AfterEnum: false
#   AfterExternBlock: false
   AfterFunction: true
#   AfterNamespace: false
#   AfterObjCDeclaration: false
   AfterStruct: false
#   AfterUnion: false
#   BeforeCatch: false
#   BeforeElse: false
#   BeforeLambdaBody: false
#   BeforeWhile: false
#   IndentBraces: false
   SplitEmptyFunction: false
#   SplitEmptyNamespace: true
   SplitEmptyRecord: false
# BreakAfterJavaFieldAnnotations: false
BreakBeforeBraces: Custom
# BreakBeforeInheritanceComma: false
# BreakBeforeTernaryOperators: true
# BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
# BreakStringLiterals: true
# CommentPragmas: '^ IWYU pragma:'
# CompactNamespaces: false
# ConstructorInitializerIndentWidth: 4
# ContinuationIndentWidth: 4
# Cpp11BracedListStyle: false
# DeriveLineEnding: true
# DerivePointerAlignment: false
# DisableFormat: false
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: false
# ForEachMacros:
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH
# IncludeBlocks: Preserve
# IncludeIsMainRegex: (Test)?$
# IncludeIsMainSourceRegex: ''
# IndentCaseBlocks: false
# IndentCaseLabels: false
# IndentExternBlock: AfterExternBlock
# IndentGotoLabels: true
IndentPPDirectives: AfterHash
# IndentWrappedFunctionNames: false
# InsertTrailingCommas: None
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
# Language: Cpp
# MacroBlockBegin: ''
# MacroBlockEnd: ''
# NamespaceIndentation: Inner
# ObjCBinPackProtocolList: Auto
# ObjCBlockIndentWidth: 4
# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: true
# ObjCSpaceBeforeProtocolList: true
# PenaltyBreakAssignment: 2
# PenaltyBreakBeforeFirstCallParameter: 19
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakString: 1000
# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PointerAlignment: Left
# SortUsingDeclarations: true
# SpaceAfterCStyleCast: false
# SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword: true
# SpaceBeforeAssignmentOperators: true
# SpaceBeforeCpp11BracedList: true
# SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
# SpaceBeforeSquareBrackets: false
# SpaceInEmptyBlock: true
# SpaceInEmptyParentheses: false
# SpacesInAngles: false
# SpacesInCStyleCastParentheses: false
# SpacesInConditionalStatement: false
# SpacesInContainerLiterals: true
# SpacesInParentheses: false
# SpacesInSquareBrackets: false
# Standard: Latest
StatementMacros: [JMP_INVOKE_RET]
# - Q_UNUSED
# - QT_REQUIRE_VERSION
# UseCRLF: false
# WhitespaceSensitiveMacros:
# - STRINGIZE
# - PP_STRINGIZE
# - BOOST_PP_STRINGIZE</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>