将NON-POD类型传递给Variadic函数是不确定的行为?

时间:2012-04-10 06:02:49

标签: c++ c standards variadic-functions pod

In this document,作者说

  

只有POD类型可以作为省略号“...”的参数,而std :: string不是POD类型。

我理解为Passing NON-POD type to Variadic function is undefined behavior。是不是? 虽然,他是说C / C ++标准吗?我试图在n3242 C ++规范中找到它。但找不到。

我想知道我理解正确,这是一个标准。

1 个答案:

答案 0 :(得分:9)

它在C ++ 11 5.2.2 / 7中指定:

  

传递具有非平凡复制构造函数,非平凡移动构造函数或非平凡析构函数的类类型的潜在评估参数,没有相应的   参数,由实现定义的语义有条件地支持。

所以由每个编译器决定是否支持它;可移植代码不能依赖任何实现定义的行为。在较旧的标准中,它只是未定义。