当前位置:  开发笔记 > 编程语言 > 正文

当目标与数组聚合时,完美转发失败

如何解决《当目标与数组聚合时,完美转发失败》经验,为你挑选了1个好方法。



1> Columbo..:

这是一个从C++ 98继承了不稳定的设计问题:某些转换或初始化被语法局限于文字,特别是字符串文字作为字符数组初始化([dcl.init.string]/1)和整数常量为空指针常量([conv.ptr]/1).当然,这与"完美"转发并不顺畅.

对于空指针,通过引入来避免该问题nullptr,0即使在转发之后也可以使用它来代替并且工作正常.

在您的情况下,基本上有两个主要选择:

Exploit brace elision - X也是一个聚合:

struct X {
     X2 x2;
} z{1, 2, "abc"}; // Ok

声明buf具有类类型,例如std::string,或者在您的情况下可能更适合某些静态大小的等效类型(限制为10).

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有