15

在这份文件中,作者说

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

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

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

4

1 回答 1

11

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

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

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

于 2012-04-10T06:10:09.660 回答