VC ++不会在T [N]表达式上附加维度

时间:2016-08-19 18:06:12

标签: c++ arrays templates visual-c++

我已经编写了一个小实用程序来生成具有指定尺寸的T类型的数组。我知道这听起来很荒谬,但我们现在忽略了可用性和目的:

#include <cstddef>

template <typename T, std::size_t first, std::size_t ... rest>
struct generate_dimensions
{
    using type = typename generate_dimensions<T, rest...>::type[first];
};

template <typename T, std::size_t first>
struct generate_dimensions<T, first>
{
    using type = T[first];
};

(我知道我需要先删除所有范围,但请暂时忽略它)

所以,使用它之后:

generate_dimensions<int, 3, 4, 5>::type;

VC ++声称类型为int[3](已安装所有已发布的更新)。而ideone C ++ 14编译器(gcc?)gives right answer,例如, int[3][4][5]

我的问题是:哪个编译器是对的?如果是其中之一,为什么呢?

对于x86,VC ++编译器版本为19.00.24210。

0 个答案:

没有答案