传递NON-POD类型可变参数函数是未定义行为?(Passing NON-POD type to V

2019-06-23 12:19发布

在这份文件中,笔者认为

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

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

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

Answer 1:

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

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

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



文章来源: Passing NON-POD type to Variadic function is undefined behavior?