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

Ben*_*min 13 c c++ standards pod variadic-functions

在这份文件中,作者说

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

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

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

Mik*_*our 10

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

通过实现定义的语义有条件地支持传递具有非平凡复制构造函数,非平凡移动构造函数或非平凡析构函数的类类型的可能已评估的参数,其中没有相应的参数.

因此,每个编译器是否支持它都取决于它; 可移植代码不能依赖任何实现定义的行为.在旧标准中,它只是未定义.

  • @Als:有条件的支持; 编译器可以选择保持未定义.所以它是否定义是未定义的. (7认同)
  • 所以它是**实现定义** *不是* **未定义**。 (3认同)
  • @Als:是的,这就是我的意思.遗憾的是我无法纠正评论中的拼写错误. (2认同)