From cfb6d6eae6e963540d05419a8a51a9369ef7f134 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Fri, 30 Jan 2004 03:51:06 +0000 Subject: [PATCH] array.xml: documentation updates from Nico [SVN r22066] --- doc/array.xml | 70 +++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/doc/array.xml b/doc/array.xml index 73e185c..414dd79 100644 --- a/doc/array.xml +++ b/doc/array.xml @@ -66,9 +66,13 @@ After considering different names, we decided to name this class simply array. - Class array fulfills - most but not all of the requirements of "reversible containers" - (see Section 23.1, [lib.container.requirements] of the C++ + Note that this class is suggested to be part of the next + Technical Report, which will extend the C++ Standard (see + http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm). + + Class array fulfills most + but not all of the requirements of "reversible containers" (see + Section 23.1, [lib.container.requirements] of the C++ Standard). The reasons array is not an reversible STL container is because: @@ -478,51 +482,39 @@ Note that if there are fewer elements in the initializer list, then each remaining element gets - default-initialized (thus, it has a defined value). However, - passing no initializer list means that the elements have an - indetermined initial value. + default-initialized (thus, it has a defined value). + - It has no user-declared constructors. - It has no private or protected non-static data members. - It has no base classes. - It has no virtual functions. + However, this approach has its drawbacks: passing no initializer list means that the elements + have an indetermined initial value, because the rule says + that aggregates may have: + + No user-declared constructors. + No private or protected non-static data members. + No base classes. + No virtual functions. - - The current implementation uses this approach. However, being - able to have indeterminate initial values is a big drawback. So, - please give me some feedback, how useful you consider this feature - to be. - -
- Open Issues + Nevertheless, The current implementation uses this approach. - + Note that for standard conforming compilers it is possible to + use fewer braces (according to 8.5.1 (11) of the Standard). That is, + you can initialize an array as follows: - - Do we want initializer list support or would the - following be OK?: + +boost::array<int,4> a = { 1, 2, 3 }; + - int data[] = { 1, 2, 3, 4 } -boost::array<int,5> x(data); // or boost::array<int,data> x; - + I'd appreciate any constructive feedback. Please note: I don't have time to read all boost + mails. Thus, to make sure that feedback arrives to me, please send + me a copy of each mail regarding this class. - Could "{ ... }" be used portably instead of "{ - { ... } }" to initialize values? 8.5.1 (11) of the Standard seems - to allow it; however, gcc 2.95.2 prints a warning - message. + The code is provided "as is" without expressed or implied + warranty. - Any way to have determinate initial values and - initializer list support? - - Static_casts for reverse iterator stuff? - - - I'd appreciate any constructive feedback. Please note: I don't - have time to read all boost mails. Thus, to make sure that feedback arrives me, - please send me a copy of each mail regarding this class.