diff options
Diffstat (limited to 'doc/test/array2.xml')
-rw-r--r-- | doc/test/array2.xml | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/doc/test/array2.xml b/doc/test/array2.xml new file mode 100644 index 0000000000..e2a90174c4 --- /dev/null +++ b/doc/test/array2.xml @@ -0,0 +1,82 @@ +<section id="array.rationale"> + <title>Design Rationale</title> + + <para> + There was an important design tradeoff regarding the + constructors: We could implement array as an "aggregate" (see + Section 8.5.1, [dcl.init.aggr], of the C++ Standard). This would + mean: + <itemizedlist> + <listitem> + <simpara> + An array can be initialized with a + brace-enclosing, comma-separated list of initializers for the + elements of the container, written in increasing subscript + order: + </simpara> + + <programlisting> + <classname>boost::array</classname><int,4> a = { { 1, 2, 3 } }; + </programlisting> + + <simpara> + Note that if there are fewer elements in the + initializer list, then each remaining element gets + default-initialized (thus, it has a defined value). + </simpara> + </listitem> + </itemizedlist> + </para> + + <para> + However, this approach has its drawbacks: <emphasis + role="bold"> + passing no initializer list means that the elements + have an indetermined initial value + </emphasis>, because the rule says + that aggregates may have: + <itemizedlist> + <listitem> + <simpara>No user-declared constructors.</simpara> + </listitem> + <listitem> + <simpara>No private or protected non-static data members.</simpara> + </listitem> + <listitem> + <simpara>No base classes.</simpara> + </listitem> + <listitem> + <simpara>No virtual functions.</simpara> + </listitem> + </itemizedlist> + </para> + + <para>Nevertheless, The current implementation uses this approach.</para> + + <para> + 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: + </para> + + <programlisting> + <classname>boost::array</classname><int,4> a = { 1, 2, 3 }; + </programlisting> + + <para> + I'd appreciate any constructive feedback. <emphasis + role="bold"> + 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. + </emphasis> + </para> + + <para> + The code is provided "as is" without expressed or implied + warranty. + </para> + +</section> + + |