【发布时间】:2018-07-19 10:17:59
【问题描述】:
我尝试为std::array 类型添加自己的构造函数,但我不确定这是否可能以及如何做到这一点...
我试过这样的:
typedef unsigned char byte_t;
namespace std {
template<std::size_t _Nm>
array::array(std::vector<byte_t> data)
{
// Some content
}
}
我想创建一个非常简单的机制来将std::vector<byte_t> 转换为std::array<byte_t, size>。
- 有可能吗?
- 我该怎么做?
我正在使用 C++14(我不能在我的项目中使用更新的标准)
【问题讨论】:
-
仅供参考,向 std 命名空间添加东西通常是 UB。
-
@user202729 总是 UB 吗?即使我尝试为自己定义的类型调整标准数据容器?
-
写一个像
make_array这样返回数组并将向量作为参数的函数会更简单 -
允许向
namespace std添加代码的情况非常有限。这无关紧要,因为您不能在namespace std或不拥有的类中添加构造函数。仅供参考std::array没有构造函数按设计。
标签: c++ c++14 stdvector stdarray constructor-overloading