Checks: >-
  -*,
  bugprone-*,
  -bugprone-easily-swappable-parameters,
  -bugprone-lambda-function-name,
  -bugprone-macro-parentheses,
  -bugprone-narrowing-conversions,
  -bugprone-reserved-identifier,
  clang-diagnostic-*,
  clang-analyzer-.*,
  cppcoreguidelines-avoid-goto,
  cppcoreguidelines-interfaces-global-init,
  cppcoreguidelines-no-malloc,
  cppcoreguidelines-prefer-member-initializer,
  cppcoreguidelines-pro-type-member-init,
  cppcoreguidelines-pro-type-static-cast-downcast,
  cppcoreguidelines-slicing,
  cppcoreguidelines-special-member-functions,
  performance-*,
  google-default-arguments,
  google-global-names-in-headers,
  google-explicit-constructor,
  misc-*,
  -misc-const-correctness,
  -misc-include-cleaner,
  -misc-no-recursion,
  -misc-non-private-member-variables-in-classes,
  -misc-use-anonymous-namespace,
  modernize-*,
  -modernize-concat-nested-namespaces,
  -modernize-return-braced-init-list,
  -modernize-use-auto,
  -modernize-use-trailing-return-type,
  -modernize-use-nodiscard,
  readability-container-size-empty,
  readability-delete-null-pointer,
  readability-duplicate-include
  readability-misplaced-array-index,
  readability-non-const-parameter,
  readability-redundant*
  readability-simplify*,
  readability-static-accessed-through-instance,
  readability-static-definition-in-anonymous-namespace,
  readability-string-compare,
  readability-suspicious-call-argument,
  readability-uniqueptr-delete-release,
  -readability-redundant-access-specifiers,

CheckOptions:
  # `cppcoreguidelines-special-member-functions` is enabled, refer to https://en.cppreference.com/w/cpp/language/rule_of_three
  - key:             cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
    value:           True
  - key:             performance-move-const-arg.CheckTriviallyCopyableMove
    value:           False
  - key:             cppcoreguidelines-special-member-functions.AllowMissingMoveFunctionsWhenCopyIsDeleted
    value:           True
