1 // RUN: %check_clang_tidy %s cppcoreguidelines-pro-type-member-init %t -- -- -fdelayed-template-parsing 2 3 template <class T> 4 struct PositiveFieldBeforeConstructor { 5 int F; 6 bool G /* with comment */; 7 int *H; PositiveFieldBeforeConstructorPositiveFieldBeforeConstructor8 PositiveFieldBeforeConstructor() {} 9 // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor does not initialize these fields: F, G, H 10 }; 11 // Explicit instantiation. 12 template class PositiveFieldBeforeConstructor<int>; 13 14 template <class T> 15 struct PositiveFieldAfterConstructor { PositiveFieldAfterConstructorPositiveFieldAfterConstructor16 PositiveFieldAfterConstructor() {} 17 // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: constructor does not initialize these fields: F, G, H 18 int F; 19 bool G /* with comment */; 20 int *H; 21 }; 22 // Explicit instantiation. 23 template class PositiveFieldAfterConstructor<int>; 24 25 // This declaration isn't used and won't be parsed 'delayed-template-parsing'. 26 // The body of the declaration is 'null' and may cause crash if not handled 27 // properly by checkers. 28 template <class T> 29 struct UnusedDelayedConstructor { UnusedDelayedConstructorUnusedDelayedConstructor30 UnusedDelayedConstructor() {} 31 int F; 32 }; 33