1 | // RUN: %check_clang_tidy %s cert-dcl50-cpp %t |
2 | |
3 | // Variadic function definitions are diagnosed. |
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> |
12 | void f3(Arg F, Ts... Rest) {} |
13 | |
14 | struct S { |
15 | void f(int, ...); // ok |
16 | 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. |
21 | extern "C" void f4(int, ...) {} // ok |
22 | extern "C" { |
23 | void f5(int, ...) {} // ok |
24 | } |
25 | |