看起来这个代码工作(所以它编译得很好),我在这里问的是:它是否保证sizeof(std :: array)与sizeof(equivalent_Carray)相同?
struct MyClass { std::arrayarr; float carr[4]; std::array cfunction() { std::array out; return out; } std::array function() { // Is this guaranteed to be the same as sizeof(carr) / sizeof(float)?? std::array out; std::cout << sizeof(arr); return out; } }; int main() { MyClass obj; obj.function(); }
Lightness Ra.. 5
没有.
我们得到的唯一保证std::array
是:
size()
是N
;
&a[n] == &a[0] + n
为了所有人0 <= n < N
;
数组是可以使用语法初始化的聚合(8.5.1)
arraya = { initializer-list };
没有什么可以阻止实现者添加一个尾随成员,虽然我知道没有理由为什么会这样做.
没有.
我们得到的唯一保证std::array
是:
size()
是N
;
&a[n] == &a[0] + n
为了所有人0 <= n < N
;
数组是可以使用语法初始化的聚合(8.5.1)
arraya = { initializer-list };
没有什么可以阻止实现者添加一个尾随成员,虽然我知道没有理由为什么会这样做.