我已经编写了一个小实用程序来生成具有指定尺寸的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。