如何解决emplace_back 到 std::vector<std::array> 不起作用
我想知道这样简单的程序不能用 gcc、clang 和 msvc 编译:
#include <array>
#include <vector>
int main()
{
std::vector<std::array<int,3>> v;
v.emplace_back( 1,2,3 );
return 0;
}
为什么不能从值序列构造 std::array ?编写带有可变参数通用引用的自定义 ctor 以有效地从值构造 std::array 看起来非常容易。
我认为如果将 std::array 视为 POD 结构会很好。
解决方法
您试图将整数放入 std::vector
,而不是您定义的 std::array<int,3>
。目前尚不清楚 v.emplace_back( 1,2,3 );
的用途。是表示 std::array<int,3>{ 1,3 }
作为向量中的一项还是表示 { std::array<int,1,1 },std::array<int,3>{ 2,2 },3>{ 3,3,3 } }
或其他内容?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。