假设我有以下代码:
using Element = std::array<int, 2>;
constexpr auto arrayOfElement()
{
return std::array
{
Element{ 1, 2 },
Element{ 2, 3 },
Element{ 123, 123 },
Element{ 8008, 1337 }
};
}
这编译得很好,但为了表明我所指的类型是返回数组的元素,我必须不断重复元素类型名称。另一种写法:
constexpr auto arrayOfElement2()
{
return std::array<Element, 4>
{
Element{ 1, 2 },
{ 2, 3 },
{ 123, 123 },
{ 8008, 1337 }
};
}
在这里,我不必像元素一样多次键入 Element,但在这种情况下,我无法推导出大小,并且必须键入第一个元素,这使得整个事情看起来有点尴尬,因为有一个边缘第一个元素的情况。
有没有一种方法可以让我只指定一次元素类型,同时还能推导出数组的大小(部分 CTAD)?
std::to_array
:
constexpr auto arrayOfElement() {
return std::to_array<Element>({
{ 1, 2 },
{ 2, 3 },
{ 123, 123 },
{ 8008, 1337 }
});
}