https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64867
David Binderman <dcb314 at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dcb314 at hotmail dot com --- Comment #30 from David Binderman <dcb314 at hotmail dot com> --- (In reply to Trass3r from comment #27) > This should really be enabled by -Wall or -Wextra as it generates code that > may easily crash or corrupt something. +1. Clang errors, intel warns and for gcc you have to enable the somewhat obscure flag -Wconditionally-supported to see anything at all. gcc looks to be a trailer on this issue. It's not about standards conformance, its about making it easy for users to find bugs. Source code I used is: struct S { S(); S( const S &); ~S(); char * p; }; void f( int, ...); void g() { S s1; f( 3, s1); }; $ /home/dcb/llvm/results/bin/clang++ sep3f.cc sep3f.cc:19:8: error: cannot pass object of non-trivial type 'S' through variadic function; call will abort at runtime [-Wnon-pod-varargs] f( 3, s1); ^ 1 error generated. $ /home/dcb34/intel/oneapi/compiler/2021.3.0/linux/bin/intel64/icpc sep3f.cc sep3f.cc(19): warning #1595: a class type that is not trivially copyable passed through ellipsis f( 3, s1); ^ $ /home/dcb/gcc/results/bin/g++ -c -g -O2 -Wall -Wextra sep3f.cc $ /home/dcb/gcc/results/bin/g++ -c -g -O2 -Wall -Wextra -Wconditionally-supported sep3f.cc sep3f.cc: In function ‘void g()’: sep3f.cc:19:10: warning: passing objects of non-trivially-copyable type ‘struct S’ through ‘...’ is conditionally supported [-Wconditionally-supported] 19 | f( 3, s1); | ~^~~~~~~~ I'll add flag -Wconditionally-supported to a build of Fedora and see what happens.