llvm/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/pro-type-member-init-delayed.cpp

// RUN: %check_clang_tidy %s cppcoreguidelines-pro-type-member-init %t -- -- -fdelayed-template-parsing

template <class T>
struct PositiveFieldBeforeConstructor {
  int F;
  bool G /* with comment */;
  int *H;
  PositiveFieldBeforeConstructor() {}
  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor does not initialize these fields: F, G, H
};
// Explicit instantiation.
template class PositiveFieldBeforeConstructor<int>;

template <class T>
struct PositiveFieldAfterConstructor {
  PositiveFieldAfterConstructor() {}
  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor does not initialize these fields: F, G, H
  int F;
  bool G /* with comment */;
  int *H;
};
// Explicit instantiation.
template class PositiveFieldAfterConstructor<int>;

// This declaration isn't used and won't be parsed 'delayed-template-parsing'.
// The body of the declaration is 'null' and may cause crash if not handled
// properly by checkers.
template <class T>
struct UnusedDelayedConstructor {
  UnusedDelayedConstructor() {}
  int F;
};