在这份文件中,笔者认为
只有POD类型可以是省略号的参数“...”,而的std :: string不是一个POD类型。
我理解这是Passing NON-POD type to Variadic function is undefined behavior
。 这样对吗?
虽然,他在说C / C ++的标准呢? 我试图在n3242 C ++规范找到它。 但无法找到。
我想知道我的理解正确,这是一个标准。
在这份文件中,笔者认为
只有POD类型可以是省略号的参数“...”,而的std :: string不是一个POD类型。
我理解这是Passing NON-POD type to Variadic function is undefined behavior
。 这样对吗?
虽然,他在说C / C ++的标准呢? 我试图在n3242 C ++规范找到它。 但无法找到。
我想知道我的理解正确,这是一个标准。
它在C ++ 11 5.2.2 / 7指定:
使具有一个非平凡复制构造,一个非平凡移动构造器,或一个非平凡的析构函数,没有相应的参数类类型的潜在的评估参数,则有条件地支持与实现定义的语义。
所以它的每个编译器是否支持与否; 可移植的代码可以不依赖任何实现定义的行为。 在旧的标准,它只是不确定。