我没有看到任何逻辑原因。我的意思是,您可以通过使用包含数组成员的结构来轻松满足要求,例如:
template <size_t n>
struct arr { int d[n]; };
auto fnReturningArray()
{
return arr<3>{0, 1, 2};
};
如果你先访问结构体成员“d”,那么使用返回指向该数组的指针将与直接返回数组完全相同,只有一个小差异。标准库自身已经通过“std::array”类型添加了类似的功能。因此看起来实现是可能的。那么为什么ISO C++禁止这种操作呢?也许是为了保持对旧代码的兼容性(但我很难相信这是原因,因为其他新添加的特性早已过时,就像“auto”关键字的新含义一样)。