将非 POD 对象传入可变参数列表
C++-Undefined-Behavior-31
可变参数列表是 C 语言的概念,C++ 中具有拷贝构造或析构函数的对象难以与其兼容,如果将非 POD 对象传入可变参数列表,程序的行为在 C++03 中是未定义的,在 C++11 中是部分由实现定义的。
示例:
string str;
void foo(int, ...);
foo(1, str); // Undefined behavior
依据
ISO/IEC 14882:2003 5.2.2(7)-undefined
ISO/IEC 14882:2011 5.2.2(7)-implementation