1 // RUN: %check_clang_tidy %s cert-dcl50-cpp %t
2 
3 // Variadic function definitions are diagnosed.
f1(int,...)4 void f1(int, ...) {}
5 // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: do not define a C-style variadic function; consider using a function parameter pack or currying instead [cert-dcl50-cpp]
6 
7 // Variadic function *declarations* are not diagnosed.
8 void f2(int, ...); // ok
9 
10 // Function parameter packs are good, however.
11 template <typename Arg, typename... Ts>
f3(Arg F,Ts...Rest)12 void f3(Arg F, Ts... Rest) {}
13 
14 struct S {
15   void f(int, ...); // ok
f1S16   void f1(int, ...) {}
17   // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: do not define a C-style variadic function; consider using a function parameter pack or currying instead
18 };
19 
20 // Function definitions that are extern "C" are good.
f4(int,...)21 extern "C" void f4(int, ...) {} // ok
22 extern "C" {
f5(int,...)23   void f5(int, ...) {} // ok
24 }
25