---
Checks: '-*,
  bugprone-argument-comment,
  bugprone-assert-side-effect,
  bugprone-bad-signal-to-kill-thread,
  bugprone-bool-pointer-implicit-conversion,
  bugprone-casting-through-void,
  bugprone-chained-comparison,
  bugprone-compare-pointer-to-member-virtual-function,
  bugprone-copy-constructor-init,
  bugprone-crtp-constructor-accessibility,
  bugprone-dangling-handle,
  bugprone-dynamic-static-initializers,
  bugprone-empty-catch,
  bugprone-fold-init-type,
  bugprone-forward-declaration-namespace,
  bugprone-inaccurate-erase,
  bugprone-inc-dec-in-conditions,
  bugprone-incorrect-enable-if,
  bugprone-incorrect-roundings,
  bugprone-infinite-loop,
  bugprone-integer-division,
  bugprone-lambda-function-name,
  bugprone-macro-parentheses,
  bugprone-macro-repeated-side-effects,
  bugprone-misplaced-operator-in-strlen-in-alloc,
  bugprone-misplaced-pointer-arithmetic-in-alloc,
  bugprone-misplaced-widening-cast,
  bugprone-move-forwarding-reference,
  bugprone-multi-level-implicit-pointer-conversion,
  bugprone-multiple-new-in-one-expression,
  bugprone-multiple-statement-macro,
  bugprone-no-escape,
  bugprone-non-zero-enum-to-bool-conversion,
  bugprone-optional-value-conversion,
  bugprone-parent-virtual-call,
  bugprone-pointer-arithmetic-on-polymorphic-object,
  bugprone-posix-return,
  bugprone-redundant-branch-condition,
  bugprone-reserved-identifier,
  bugprone-return-const-ref-from-parameter,
  bugprone-shared-ptr-array-mismatch,
  bugprone-signal-handler,
  bugprone-signed-char-misuse,
  bugprone-sizeof-container,
  bugprone-sizeof-expression,
  bugprone-spuriously-wake-up-functions,
  bugprone-standalone-empty,
  bugprone-string-constructor,
  bugprone-string-integer-assignment,
  bugprone-string-literal-with-embedded-nul,
  bugprone-stringview-nullptr,
  bugprone-suspicious-enum-usage,
  bugprone-suspicious-include,
  bugprone-suspicious-memory-comparison,
  bugprone-suspicious-memset-usage,
  bugprone-suspicious-missing-comma,
  bugprone-suspicious-realloc-usage,
  bugprone-suspicious-semicolon,
  bugprone-suspicious-string-compare,
  bugprone-suspicious-stringview-data-usage,
  bugprone-swapped-arguments,
  bugprone-switch-missing-default-case,
  bugprone-terminating-continue,
  bugprone-throw-keyword-missing,
  bugprone-too-small-loop-variable,
  bugprone-undefined-memory-manipulation,
  bugprone-undelegated-constructor,
  bugprone-unhandled-exception-at-new,
  bugprone-unhandled-self-assignment,
  bugprone-unique-ptr-array-mismatch,
  bugprone-unsafe-functions,
  bugprone-unused-local-non-trivial-variable,
  bugprone-unused-raii,
  bugprone-unused-return-value,
  bugprone-use-after-move,
  bugprone-virtual-near-miss,
  cppcoreguidelines-init-variables,
  cppcoreguidelines-misleading-capture-default-by-value,
  cppcoreguidelines-no-suspend-with-lock,
  cppcoreguidelines-pro-type-member-init,
  cppcoreguidelines-pro-type-static-cast-downcast,
  cppcoreguidelines-rvalue-reference-param-not-moved,
  cppcoreguidelines-use-default-member-init,
  cppcoreguidelines-virtual-class-destructor,
  hicpp-ignored-remove-result,
  llvm-namespace-comment,
  misc-const-correctness,
  misc-definitions-in-headers,
  misc-header-include-cycle,
  misc-include-cleaner,
  misc-misplaced-const,
  misc-redundant-expression,
  misc-static-assert,
  misc-throw-by-value-catch-by-reference,
  misc-unused-alias-decls,
  misc-unused-using-decls,
  modernize-concat-nested-namespaces,
  modernize-deprecated-headers,
  modernize-make-shared,
  modernize-make-unique,
  modernize-pass-by-value,
  modernize-type-traits,
  modernize-use-designated-initializers,
  modernize-use-emplace,
  modernize-use-equals-default,
  modernize-use-equals-delete,
  modernize-use-override,
  modernize-use-ranges,
  modernize-use-starts-ends-with,
  modernize-use-std-numbers,
  modernize-use-using,
  performance-faster-string-find,
  performance-for-range-copy,
  performance-implicit-conversion-in-loop,
  performance-inefficient-vector-operation,
  performance-move-const-arg,
  performance-move-constructor-init,
  performance-no-automatic-move,
  performance-trivially-destructible,
  readability-avoid-nested-conditional-operator,
  readability-avoid-return-with-void-value,
  readability-braces-around-statements,
  readability-const-return-type,
  readability-container-contains,
  readability-container-size-empty,
  readability-convert-member-functions-to-static,
  readability-duplicate-include,
  readability-else-after-return,
  readability-enum-initial-value,
  readability-implicit-bool-conversion,
  readability-inconsistent-declaration-parameter-name,
  readability-identifier-naming,
  readability-make-member-function-const,
  readability-math-missing-parentheses,
  readability-misleading-indentation,
  readability-non-const-parameter,
  readability-redundant-casting,
  readability-redundant-declaration,
  readability-redundant-inline-specifier,
  readability-redundant-member-init,
  readability-redundant-string-init,
  readability-reference-to-constructed-temporary,
  readability-simplify-boolean-expr,
  readability-static-accessed-through-instance,
  readability-static-definition-in-anonymous-namespace,
  readability-suspicious-call-argument,
  readability-use-std-min-max
  '

CheckOptions:
  readability-braces-around-statements.ShortStatementLines: 2
  readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
  readability-identifier-naming.ClassCase: CamelCase
  readability-identifier-naming.StructCase: CamelCase
  readability-identifier-naming.UnionCase: CamelCase
  readability-identifier-naming.EnumCase: CamelCase
  readability-identifier-naming.EnumConstantCase: CamelCase
  readability-identifier-naming.ScopedEnumConstantCase: CamelCase
  readability-identifier-naming.GlobalConstantCase: UPPER_CASE
  readability-identifier-naming.GlobalConstantPrefix: 'k'
  readability-identifier-naming.GlobalVariableCase: CamelCase
  readability-identifier-naming.GlobalVariablePrefix: 'g'
  readability-identifier-naming.ConstexprFunctionCase: camelBack
  readability-identifier-naming.ConstexprMethodCase: camelBack
  readability-identifier-naming.ClassMethodCase: camelBack
  readability-identifier-naming.ClassMemberCase: camelBack
  readability-identifier-naming.ClassConstantCase: UPPER_CASE
  readability-identifier-naming.ClassConstantPrefix: 'k'
  readability-identifier-naming.StaticConstantCase: UPPER_CASE
  readability-identifier-naming.StaticConstantPrefix: 'k'
  readability-identifier-naming.StaticVariableCase: UPPER_CASE
  readability-identifier-naming.StaticVariablePrefix: 'k'
  readability-identifier-naming.ConstexprVariableCase: UPPER_CASE
  readability-identifier-naming.ConstexprVariablePrefix: 'k'
  readability-identifier-naming.LocalConstantCase: camelBack
  readability-identifier-naming.LocalVariableCase: camelBack
  readability-identifier-naming.TemplateParameterCase: CamelCase
  readability-identifier-naming.ParameterCase: camelBack
  readability-identifier-naming.FunctionCase: camelBack
  readability-identifier-naming.MemberCase: camelBack
  readability-identifier-naming.PrivateMemberSuffix: _
  readability-identifier-naming.ProtectedMemberSuffix: _
  readability-identifier-naming.PublicMemberSuffix: ''
  readability-identifier-naming.FunctionIgnoredRegexp: '.*tag_invoke.*'
  bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
  bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc
  misc-include-cleaner.IgnoreHeaders: '.*/(detail|impl)/.*;.*(expected|unexpected).*;.*ranges_lower_bound\.h;time.h;stdlib.h'

HeaderFilterRegex: '^.*/(src|tests)/.*\.(h|hpp)$'
WarningsAsErrors: '*'
