Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用std::make_数组和C结构_C++_C++11_Std - Fatal编程技术网

C++ 使用std::make_数组和C结构

C++ 使用std::make_数组和C结构,c++,c++11,std,C++,C++11,Std,我一直在试验,总的来说对结果非常满意。代码比较简洁,我不需要将数组大小指定为模板参数 我遇到的一个未知问题是如何在原始C结构中使用make_数组。比如说, struct Point { int x, y; }; auto triangle = std::make_array<point>({3, 3}, {5, 5}, {1, 5}); 结构点{ int x,y; }; 自动三角形=std::make_数组({3,3},{5,5},{1,5}); 如果我为Point创建

我一直在试验,总的来说对结果非常满意。代码比较简洁,我不需要将数组大小指定为模板参数

我遇到的一个未知问题是如何在原始C结构中使用make_数组。比如说,

struct Point {
    int x, y;
};

auto triangle = std::make_array<point>({3, 3}, {5, 5}, {1, 5});
结构点{
int x,y;
};
自动三角形=std::make_数组({3,3},{5,5},{1,5});

如果我为Point创建一个constexpr构造函数,我就可以实现这一点。这并不总是一个选项——我的一些结构是在C代码使用的头中定义的。使用std::array的构造函数可以很好地工作。有没有任何方法可以让它与std::make_array一起工作?

到_array({3,3},{5,5},{1,5})。N4391中不包含对_数组的
重载,但它的实现存在于中。如果您分配给constexpr变量,那么我看不出您怎么会认为还有其他变量way@Sopel,我认为constexpr无关紧要,因为它可以很好地处理常规类型,所以我运行了一个测试,但它仍然无法构建。我从示例中删除了constexpr,以澄清to_数组的实现确实有效。如果你想把它作为一个答案,我很乐意接受。你知道to_数组和make_数组的区别吗?我已经看到了两者的参考文献,但在何时使用两者之间没有明确的区别。