Topic: [tree] Proposal for hierarchical data structures.


Author: Rene Rivera <grafikrobot@gmail.com>
Date: Wed, 19 Jun 2013 09:46:01 -0700 (PDT)
Raw View
------=_Part_4537_13013656.1371660361190
Content-Type: text/plain; charset=ISO-8859-1

Some years ago Bernhard Reiter and I worked on a proposal for adding
hierarchical concepts and data structures to the standard (see N2101 <
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2101.html>). I've
updated the paper to conform to the C++11 standard and I'm looking for
feedback before submitting the update before the mail deadline for the next
meeting. I.e. I need feedback ASAP :-)

The updated paper can be viewed at <http://tinyurl.com/p6jpu8f>.

Thanks, Rene.

--
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org - grafik/redshift-software.com
-- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_4537_13013656.1371660361190
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<span style=3D"font-family: arial, sans-serif; font-size: 13.20000076293945=
3px;">Some years ago Bernhard Reiter and I worked on a proposal for adding =
hierarchical concepts and data structures to the standard (see N2101 &lt;</=
span><a href=3D"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n21=
01.html" target=3D"_blank" style=3D"color: rgb(17, 85, 204); font-family: a=
rial, sans-serif; font-size: 13.200000762939453px;">http://www.open-std.org=
/jtc1/<wbr>sc22/wg21/docs/papers/2006/<wbr>n2101.html</a><span style=3D"fon=
t-family: arial, sans-serif; font-size: 13.200000762939453px;">&gt;). I've =
updated the paper to conform to the C++11 standard and I'm looking for feed=
back before submitting the update before the mail deadline for the next mee=
ting. I.e. I need feedback ASAP :-)</span><div style=3D"font-family: arial,=
 sans-serif; font-size: 13.200000762939453px;"><br></div><div style=3D"font=
-family: arial, sans-serif; font-size: 13.200000762939453px;">The updated p=
aper can be viewed at &lt;<a href=3D"http://tinyurl.com/p6jpu8f" target=3D"=
_blank" style=3D"color: rgb(17, 85, 204);">http://tinyurl.com/p6jpu8f</a>&g=
t;.</div><div style=3D"font-family: arial, sans-serif; font-size: 13.200000=
762939453px;"><br></div><div style=3D"font-family: arial, sans-serif; font-=
size: 13.200000762939453px;">Thanks, Rene.</div><div style=3D"font-family: =
arial, sans-serif; font-size: 13.200000762939453px;"><br></div><div style=
=3D"font-family: arial, sans-serif; font-size: 13.200000762939453px;"><span=
 style=3D"color: rgb(136, 136, 136); font-size: 13.200000762939453px;">--&n=
bsp;</span><br style=3D"color: rgb(136, 136, 136); font-size: 13.2000007629=
39453px;"><span style=3D"color: rgb(136, 136, 136); font-size: 13.200000762=
939453px;">-- Grafik - Don't Assume Anything</span><br style=3D"color: rgb(=
136, 136, 136); font-size: 13.200000762939453px;"><span style=3D"color: rgb=
(136, 136, 136); font-size: 13.200000762939453px;">-- Redshift Software, In=
c. -&nbsp;</span><a href=3D"http://redshift-software.com/" target=3D"_blank=
" style=3D"color: rgb(17, 85, 204); font-size: 13.200000762939453px;">http:=
//redshift-software.com</a><br style=3D"color: rgb(136, 136, 136); font-siz=
e: 13.200000762939453px;"><span style=3D"color: rgb(136, 136, 136); font-si=
ze: 13.200000762939453px;">-- rrivera/</span><a href=3D"http://acm.org/" ta=
rget=3D"_blank" style=3D"color: rgb(17, 85, 204); font-size: 13.20000076293=
9453px;">acm.org</a><span style=3D"color: rgb(136, 136, 136); font-size: 13=
..200000762939453px;">&nbsp;- grafik/</span><a href=3D"http://redshift-softw=
are.com/" target=3D"_blank" style=3D"color: rgb(17, 85, 204); font-size: 13=
..200000762939453px;">redshift-software.com</a><br style=3D"color: rgb(136, =
136, 136); font-size: 13.200000762939453px;"><span style=3D"color: rgb(136,=
 136, 136); font-size: 13.200000762939453px;">-- 102708583/icq - grafikrobo=
t/aim - grafikrobot/yahoo</span><br></div>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_4537_13013656.1371660361190--

.


Author: Jonathan Wakely <cxx@kayari.org>
Date: Wed, 19 Jun 2013 11:37:14 -0700 (PDT)
Raw View
------=_Part_522_16385217.1371667034809
Content-Type: text/plain; charset=ISO-8859-1



On Wednesday, June 19, 2013 5:46:01 PM UTC+1, Rene Rivera wrote:
>
> Some years ago Bernhard Reiter and I worked on a proposal for adding
> hierarchical concepts and data structures to the standard (see N2101 <
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2101.html>).
> I've updated the paper to conform to the C++11 standard and I'm looking for
> feedback before submitting the update before the mail deadline for the next
> meeting. I.e. I need feedback ASAP :-)
>
> The updated paper can be viewed at <http://tinyurl.com/p6jpu8f>.
>

At last, a proposal to get excited about!

My comments are largely editorial, from my quick look it seems you've done
a great job updating it to use C++11.


A few rows in table 3 say "shal" not "shall".  Is the choice of "should"
for complexity requirements intentional?  It allows implementors to ignore
the requirement and have worse than linear performance, is that necessary
for some trees?

I had to read the effects for insert_above() a couple of times to parse it,
would it be clearer like this?
"Inserts a copy of rv as a child of p's parent and <INS>the</INS> new
parent of p and its siblings."
Even like that I found that wording a bit confusing, the terms parent and
child refer to cursors elsewhere, but in the effects of insert_above you
refer to an element being the parent of a cursor. Maybe I missed it, but I
didn't see "parent" being used in that sense elsewhere.

The standard is inconsistent about it (I'm slowly working to change that)
but there is no need to say binary_tree<T, Allocator> in the synopsis of
binary_tree, the injected class name means you can leave off the template
argument list. That tends to make the synopses much easier to read e.g.

binary_tree<T, Allocator>&operator=(const binary_tree<T, Allocator>& x);

becomes

binary_tree& operator=(const binary_tree& x);


Should there be const versions of root, shoot and inorder_first?
It seems inconvenient to have to switch between croot() and root()
depending on whether I'm working with a const tree or not.

The const is in the wrong place on binary_tree::inorder_cfirst:

    const_cursor  inorder_cfirst const() noexcept;


Can the effects of binary_tree::assign() be described using a range-based
for loop?  Whenever I see an old-style for loop now I wonder why it isn't
using the new style, and scan it for post-increments or subtle iterator
invalidations.  In any case, it could avoid calling subtree.end() on every
iteration, couldn't it?  Not a big deal either way though.

In [cursors]/2 "of either of the expressions ++i and i = i.begin()" the
words  "either of" make it sound like it must be _either_ a sequence of
increments _or_ a sequence of descents ... but it can be a mix, right?

[cursors]/5 "emtpy" should be "empty"






--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_522_16385217.1371667034809
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<br><br>On Wednesday, June 19, 2013 5:46:01 PM UTC+1, Rene Rivera wrote:<bl=
ockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border=
-left: 1px #ccc solid;padding-left: 1ex;"><span style=3D"font-family:arial,=
sans-serif;font-size:13.200000762939453px">Some years ago Bernhard Reiter a=
nd I worked on a proposal for adding hierarchical concepts and data structu=
res to the standard (see N2101 &lt;</span><a href=3D"http://www.open-std.or=
g/jtc1/sc22/wg21/docs/papers/2006/n2101.html" style=3D"color:rgb(17,85,204)=
;font-family:arial,sans-serif;font-size:13.200000762939453px" target=3D"_bl=
ank">http://www.open-std.org/jtc1/<wbr>sc22/wg21/docs/papers/2006/<wbr>n210=
1.html</a><span style=3D"font-family:arial,sans-serif;font-size:13.20000076=
2939453px">&gt;). I've updated the paper to conform to the C++11 standard a=
nd I'm looking for feedback before submitting the update before the mail de=
adline for the next meeting. I.e. I need feedback ASAP :-)</span><div style=
=3D"font-family:arial,sans-serif;font-size:13.200000762939453px"><br></div>=
<div style=3D"font-family:arial,sans-serif;font-size:13.200000762939453px">=
The updated paper can be viewed at &lt;<a href=3D"http://tinyurl.com/p6jpu8=
f" style=3D"color:rgb(17,85,204)" target=3D"_blank">http://tinyurl.com/p6jp=
u8f</a>&gt;.</div></blockquote><div><br>At last, a proposal to get excited =
about!<br><br>My comments are largely editorial, from my quick look it seem=
s you've done a great job updating it to use C++11.<br><br><br>A few rows i=
n table 3 say "shal" not "shall".&nbsp; Is the choice of "should" for compl=
exity requirements intentional?&nbsp; It allows implementors to ignore the =
requirement and have worse than linear performance, is that necessary for s=
ome trees?<br><br>I had to read the effects for insert_above() a couple of =
times to parse it, would it be clearer like this?<br>"Inserts
                a copy of <code class=3D"literal">rv</code> as a child of <=
code class=3D"literal">p</code>'s
                parent and &lt;INS&gt;the&lt;/INS&gt; new parent of <code c=
lass=3D"literal">p</code> and its siblings."<br>Even like that I found that=
 wording a bit confusing, the terms parent and child refer to cursors elsew=
here, but in the effects of insert_above you refer to an element being the =
parent of a cursor. Maybe I missed it, but I didn't see "parent" being used=
 in that sense elsewhere.<br><br>The standard is inconsistent about it (I'm=
 slowly working to change that) but there is no need to say<span class=3D"s=
pecial"> binary_tree&lt;</span><span class=3D"identifier">T</span><span cla=
ss=3D"special">,</span> <span class=3D"identifier">Allocator</span><span cl=
ass=3D"special">&gt;</span> in the synopsis of binary_tree, the injected cl=
ass name means you can leave off the template argument list. That tends to =
make the synopses much easier to read e.g.<br><pre class=3D"programlisting"=
><span class=3D"identifier">binary_tree</span><span class=3D"special">&lt;<=
/span><span class=3D"identifier">T</span><span class=3D"special">,</span> <=
span class=3D"identifier">Allocator</span><span class=3D"special">&gt;&amp;=
</span>
<span class=3D"keyword">operator</span><span class=3D"special">=3D(</span><=
span class=3D"keyword">const</span> <span class=3D"identifier">binary_tree<=
/span><span class=3D"special">&lt;</span><span class=3D"identifier">T</span=
><span class=3D"special">,</span> <span class=3D"identifier">Allocator</spa=
n><span class=3D"special">&gt;&amp;</span> <span class=3D"identifier">x</sp=
an><span class=3D"special">);</span><span class=3D"special"></span></pre>be=
comes <br><pre class=3D"programlisting"><span class=3D"identifier">binary_t=
ree</span><span class=3D"special"></span><span class=3D"identifier"></span>=
<span class=3D"special"></span><span class=3D"special">&amp;</span> <span c=
lass=3D"keyword">operator</span><span class=3D"special">=3D(</span><span cl=
ass=3D"keyword">const</span> <span class=3D"identifier">binary_tree</span><=
span class=3D"special">&amp;</span> <span class=3D"identifier">x</span><spa=
n class=3D"special">);</span></pre><br>Should there be const versions of ro=
ot, shoot and inorder_first?<br>It seems inconvenient to have to switch bet=
ween croot() and root() depending on whether I'm working with a const tree =
or not.<br><br>The const is in the wrong place on binary_tree::inorder_cfir=
st:<br><pre class=3D"programlisting">    <span class=3D"identifier">const_c=
ursor</span>  <span class=3D"identifier">inorder_cfirst</span> <span class=
=3D"keyword">const</span><span class=3D"special">()</span> <span class=3D"k=
eyword">noexcept</span><span class=3D"special">;</span></pre><br>Can the ef=
fects of binary_tree::assign() be described using a range-based for loop?&n=
bsp; Whenever I see an old-style for loop now I wonder why it isn't using t=
he new style, and scan it for post-increments or subtle iterator invalidati=
ons.&nbsp; In any case, it could avoid calling subtree.end() on every itera=
tion, couldn't it?&nbsp; Not a big deal either way though.<br><br>In [curso=
rs]/2 "of either
    of the expressions <code class=3D"computeroutput"><span class=3D"specia=
l">++</span><span class=3D"identifier">i</span></code> and <code class=3D"c=
omputeroutput"><span class=3D"identifier">i</span> <span class=3D"special">=
=3D</span>
    <span class=3D"identifier">i</span><span class=3D"special">.</span><spa=
n class=3D"identifier">begin</span><span class=3D"special">()"</span></code=
> the words&nbsp; "either of" make it sound like it must be _either_ a sequ=
ence of increments _or_ a sequence of descents ... but it can be a mix, rig=
ht?<br><br>[cursors]/5 "<code class=3D"computeroutput"><span class=3D"ident=
ifier">emtpy" should be "</span></code><code class=3D"computeroutput"><span=
 class=3D"identifier">empty"</span></code><br><br><br><br><br><br><br></div=
>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_522_16385217.1371667034809--

.


Author: Rene Rivera <grafikrobot@gmail.com>
Date: Thu, 20 Jun 2013 07:50:55 -0700 (PDT)
Raw View
------=_Part_5378_24604513.1371739855072
Content-Type: text/plain; charset=ISO-8859-1

(For some reason posting direct emails to this list just doesn't work for
me..) I sent the following last night...

On Wed, Jun 19, 2013 at 1:37 PM, Jonathan Wakely wrote:

>
>
> On Wednesday, June 19, 2013 5:46:01 PM UTC+1, Rene Rivera wrote:
>>
>> Some years ago Bernhard Reiter and I worked on a proposal for adding
>> hierarchical concepts and data structures to the standard (see N2101 <
>> http://www.open-std.org/jtc1/**sc22/wg21/docs/papers/2006/**n2101.html<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2101.html>>).
>> I've updated the paper to conform to the C++11 standard and I'm looking for
>> feedback before submitting the update before the mail deadline for the next
>> meeting. I.e. I need feedback ASAP :-)
>>
>> The updated paper can be viewed at <http://tinyurl.com/p6jpu8f>.
>>
>
> At last, a proposal to get excited about!
>

Hooray :-)

My comments are largely editorial, from my quick look it seems you've done
> a great job updating it to use C++11.
>
>
> A few rows in table 3 say "shal" not "shall".  Is the choice of "should"
> for complexity requirements intentional?  It allows implementors to ignore
> the requirement and have worse than linear performance, is that necessary
> for some trees?
>

It was not intentional. And I've changed them to "shall". We mention that
some of the complexity requirements force some implementation choices that
rules out certain kinds of tree implementations. But in this case linear
complexity is somewhat in the middle of the field. And covers non-node
based implementations.


> I had to read the effects for insert_above() a couple of times to parse
> it, would it be clearer like this?
> "Inserts a copy of rv as a child of p's parent and <INS>the</INS> new
> parent of p and its siblings."
>

I've reworded to "Inserts a copy of rv as a child of p's parent; the new
child becomes the parent of p and its siblings." Hopefully that clarifies
it enough.


> Even like that I found that wording a bit confusing, the terms parent and
> child refer to cursors elsewhere, but in the effects of insert_above you
> refer to an element being the parent of a cursor. Maybe I missed it, but I
> didn't see "parent" being used in that sense elsewhere.
>

True, we don't normally refer to the elements that way. But being ultra
precise seemed less of a concern in this case in favor of a more terse
explanation as it's long as it stands.

The standard is inconsistent about it (I'm slowly working to change that)
> but there is no need to saybinary_tree<T, Allocator> in the synopsis of
> binary_tree, the injected class name means you can leave off the template
> argument list. That tends to make the synopses much easier to read e.g.
>
> binary_tree<T, Allocator>&
> operator=(const binary_tree<T, Allocator>& x);
>
> becomes
>
> binary_tree& operator=(const binary_tree& x);
>
> A yes.. I was trying to decide if I should go with the predominant C++11
style at the time. Now that I look at the C++14 WIP I see the move to the
more terse forms. Hooray for simplicity! I've changed all
such occurrences in the text.

Should there be const versions of root, shoot and inorder_first?
> It seems inconvenient to have to switch between croot() and root()
> depending on whether I'm working with a const tree or not.
>

There should definitely be "root() const" and "shoot() const" as that is a
requirement for all hierarchy containers (see table 2). I decided to also
add "inorder_first() const" as it is certainly useful when doing algorithms
to have them.


> The const is in the wrong place on binary_tree::inorder_cfirst:
>
>     const_cursor  inorder_cfirst const() noexcept;
>
> Fixed, thanks.


> Can the effects of binary_tree::assign() be described using a range-based
> for loop?  Whenever I see an old-style for loop now I wonder why it isn't
> using the new style, and scan it for post-increments or subtle iterator
> invalidations.  In any case, it could avoid calling subtree.end() on every
> iteration, couldn't it?  Not a big deal either way though.
>

Changed all for's to range based now.


> In [cursors]/2 "of either of the expressions ++i and i = i.begin()" the
> words  "either of" make it sound like it must be _either_ a sequence of
> increments _or_ a sequence of descents ... but it can be a mix, right?
>

Right. I took out "either of" to make it clearer that it's combination not
exclusive choice.


> [cursors]/5 "emtpy" should be "empty"


Fixed.

Thank you very much for the corrections. The updated proposal is at the
same location <>.


Rene.

--
--
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org - grafik/redshift-software.com
-- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_5378_24604513.1371739855072
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

(For some reason posting direct emails to this list just doesn't work for m=
e..) I sent the following last night...<div><br><div class=3D"im" style=3D"=
color: rgb(80, 0, 80);">On Wed, Jun 19, 2013 at 1:37 PM, Jonathan Wakely&nb=
sp;wrote:<br></div><div class=3D"gmail_extra"><div class=3D"gmail_quote"><d=
iv class=3D"im" style=3D"color: rgb(80, 0, 80); font-family: arial, sans-se=
rif;"><blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex;=
 border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left=
-style: solid; padding-left: 1ex;"><div><br><br>On Wednesday, June 19, 2013=
 5:46:01 PM UTC+1, Rene Rivera wrote:<blockquote class=3D"gmail_quote" styl=
e=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: =
rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><span sty=
le=3D"font-size: 13.200000762939453px;">Some years ago Bernhard Reiter and =
I worked on a proposal for adding hierarchical concepts and data structures=
 to the standard (see N2101 &lt;</span><a href=3D"http://www.open-std.org/j=
tc1/sc22/wg21/docs/papers/2006/n2101.html" target=3D"_blank" style=3D"color=
: rgb(17, 85, 204); font-size: 13.200000762939453px;">http://www.open-std.o=
rg/jtc1/<u></u><wbr>sc22/wg21/docs/papers/2006/<u></u>n21<wbr>01.html</a><s=
pan style=3D"font-size: 13.200000762939453px;">&gt;). I've updated the pape=
r to conform to the C++11 standard and I'm looking for feedback before subm=
itting the update before the mail deadline for the next meeting. I.e. I nee=
d feedback ASAP :-)</span><div style=3D"font-size: 13.200000762939453px;"><=
br></div><div style=3D"font-size: 13.200000762939453px;">The updated paper =
can be viewed at &lt;<a href=3D"http://tinyurl.com/p6jpu8f" target=3D"_blan=
k" style=3D"color: rgb(17, 85, 204);">http://tinyurl.com/p6jpu8f</a>&gt;.</=
div></blockquote></div><div><br>At last, a proposal to get excited about!<b=
r></div></blockquote><div><br></div></div><div style=3D"font-family: arial,=
 sans-serif;">Hooray :-)&nbsp;</div><div class=3D"im" style=3D"color: rgb(8=
0, 0, 80); font-family: arial, sans-serif;"><div><br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1p=
x; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding=
-left: 1ex;">My comments are largely editorial, from my quick look it seems=
 you've done a great job updating it to use C++11.<br><br><br>A few rows in=
 table 3 say "shal" not "shall".&nbsp; Is the choice of "should" for comple=
xity requirements intentional?&nbsp; It allows implementors to ignore the r=
equirement and have worse than linear performance, is that necessary for so=
me trees?<br></blockquote><div><br></div></div><div style=3D"font-family: a=
rial, sans-serif;">It was not intentional. And I've changed them to "shall"=
.. We mention that some of the complexity requirements force some implementa=
tion choices that rules out certain kinds of tree implementations. But in t=
his case linear complexity is somewhat in the middle of the field. And cove=
rs non-node based implementations.</div><div class=3D"im" style=3D"color: r=
gb(80, 0, 80); font-family: arial, sans-serif;"><div>&nbsp;</div><blockquot=
e class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-wid=
th: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; p=
adding-left: 1ex;">I had to read the effects for insert_above() a couple of=
 times to parse it, would it be clearer like this?<br>"Inserts a copy of&nb=
sp;<code>rv</code>&nbsp;as a child of&nbsp;<code>p</code>'s parent and &lt;=
INS&gt;the&lt;/INS&gt; new parent of&nbsp;<code>p</code>&nbsp;and its sibli=
ngs."<br></blockquote><div><br></div></div><div style=3D"font-family: arial=
, sans-serif;">I've reworded to "Inserts a copy of rv as a child of p's par=
ent; the new child becomes the parent of p and its siblings." Hopefully tha=
t clarifies it enough.</div><div class=3D"im" style=3D"color: rgb(80, 0, 80=
); font-family: arial, sans-serif;"><div>&nbsp;</div><blockquote class=3D"g=
mail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; bor=
der-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left:=
 1ex;">Even like that I found that wording a bit confusing, the terms paren=
t and child refer to cursors elsewhere, but in the effects of insert_above =
you refer to an element being the parent of a cursor. Maybe I missed it, bu=
t I didn't see "parent" being used in that sense elsewhere.<br></blockquote=
><div><br></div></div><div style=3D"font-family: arial, sans-serif;">True, =
we don't normally refer to the elements that way. But being ultra precise s=
eemed less of a concern in this case in favor of a more terse explanation a=
s it's long as it stands.</div><div class=3D"im" style=3D"color: rgb(80, 0,=
 80); font-family: arial, sans-serif;"><div><br></div><blockquote class=3D"=
gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; bo=
rder-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left=
: 1ex;">The standard is inconsistent about it (I'm slowly working to change=
 that) but there is no need to saybinary_tree&lt;T,&nbsp;Allocator&gt;&nbsp=
;in the synopsis of binary_tree, the injected class name means you can leav=
e off the template argument list. That tends to make the synopses much easi=
er to read e.g.<br><pre style=3D"white-space: pre-wrap;">binary_tree&lt;T, =
Allocator&gt;&amp;
operator=3D(const binary_tree&lt;T, Allocator&gt;&amp; x);</pre>becomes&nbs=
p;<br><pre style=3D"white-space: pre-wrap;">binary_tree&amp; operator=3D(co=
nst binary_tree&amp; x);</pre></blockquote></div><div style=3D"font-family:=
 arial, sans-serif;">A yes.. I was trying to decide if I should go with the=
 predominant C++11 style at the time. Now that I look at the C++14 WIP I se=
e the move to the more terse forms. Hooray for simplicity! I've changed all=
 such&nbsp;occurrences&nbsp;in the text.</div><div class=3D"im" style=3D"co=
lor: rgb(80, 0, 80); font-family: arial, sans-serif;"><div><br></div><block=
quote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left=
-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: soli=
d; padding-left: 1ex;">Should there be const versions of root, shoot and in=
order_first?<br>It seems inconvenient to have to switch between croot() and=
 root() depending on whether I'm working with a const tree or not.<br></blo=
ckquote><div><br></div></div><div style=3D"font-family: arial, sans-serif;"=
>There should definitely be "root() const" and "shoot() const" as that is a=
 requirement for all hierarchy containers (see table 2). I decided to also =
add "inorder_first() const" as it is certainly useful when doing algorithms=
 to have them.</div><div class=3D"im" style=3D"color: rgb(80, 0, 80); font-=
family: arial, sans-serif;"><div>&nbsp;</div><blockquote class=3D"gmail_quo=
te" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left=
-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">T=
he const is in the wrong place on binary_tree::inorder_cfirst:<br><pre styl=
e=3D"white-space: pre-wrap;">    const_cursor  inorder_cfirst const() noexc=
ept;</pre></blockquote></div><div style=3D"font-family: arial, sans-serif;"=
>Fixed, thanks.</div><div class=3D"im" style=3D"color: rgb(80, 0, 80); font=
-family: arial, sans-serif;"><div>&nbsp;</div><blockquote class=3D"gmail_qu=
ote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-lef=
t-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">=
Can the effects of binary_tree::assign() be described using a range-based f=
or loop?&nbsp; Whenever I see an old-style for loop now I wonder why it isn=
't using the new style, and scan it for post-increments or subtle iterator =
invalidations.&nbsp; In any case, it could avoid calling subtree.end() on e=
very iteration, couldn't it?&nbsp; Not a big deal either way though.<br></b=
lockquote><div><br></div></div><div style=3D"font-family: arial, sans-serif=
;">Changed all for's to range based now.</div><div class=3D"im" style=3D"co=
lor: rgb(80, 0, 80); font-family: arial, sans-serif;"><div>&nbsp;</div><blo=
ckquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-le=
ft-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: so=
lid; padding-left: 1ex;">In [cursors]/2 "of either of the expressions&nbsp;=
<code>++i</code>&nbsp;and&nbsp;<code>i&nbsp;=3D&nbsp;i.begin()"</code>&nbsp=
;the words&nbsp; "either of" make it sound like it must be _either_ a seque=
nce of increments _or_ a sequence of descents ... but it can be a mix, righ=
t?<br></blockquote><div><br></div></div><div style=3D"font-family: arial, s=
ans-serif;">Right. I took out "either of" to make it clearer that it's comb=
ination not exclusive choice.</div><div class=3D"im" style=3D"color: rgb(80=
, 0, 80); font-family: arial, sans-serif;"><div>&nbsp;</div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; border-left-width: 1=
px; border-left-color: rgb(204, 204, 204); border-left-style: solid; paddin=
g-left: 1ex;">[cursors]/5 "<code>emtpy" should be "</code><code>empty"</cod=
e></blockquote><div><br></div></div><div style=3D"font-family: arial, sans-=
serif;">Fixed.</div><div style=3D"font-family: arial, sans-serif;"><br></di=
v><div style=3D"font-family: arial, sans-serif;">Thank you very much for th=
e corrections. The updated proposal is at the same location &lt;&gt;.</div>=
<div style=3D"font-family: arial, sans-serif;"><br></div><div style=3D"font=
-family: arial, sans-serif;"><div class=3D"gmail_quote"><span class=3D"HOEn=
Zb adL"><font color=3D"#888888"><br class=3D"Apple-interchange-newline">Ren=
e.</font></span></div><span class=3D"HOEnZb adL"><font color=3D"#888888"><d=
iv><br></div>--&nbsp;<br></font></span><div class=3D"im adL" style=3D"color=
: rgb(80, 0, 80);">--&nbsp;<br>-- Grafik - Don't Assume Anything<br>-- Reds=
hift Software, Inc. -&nbsp;<a href=3D"http://redshift-software.com/" target=
=3D"_blank" style=3D"color: rgb(17, 85, 204);">http://redshift-software.com=
</a><br>-- rrivera/<a href=3D"http://acm.org/" target=3D"_blank" style=3D"c=
olor: rgb(17, 85, 204);">acm.org</a>&nbsp;- grafik/<a href=3D"http://redshi=
ft-software.com/" target=3D"_blank" style=3D"color: rgb(17, 85, 204);">reds=
hift-software.com</a><br>-- 102708583/icq - grafikrobot/aim - grafikrobot/y=
ahoo</div></div></div></div></div>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_5378_24604513.1371739855072--

.


Author: Rene Rivera <grafikrobot@gmail.com>
Date: Fri, 21 Jun 2013 07:30:35 -0700 (PDT)
Raw View
------=_Part_569_25094295.1371825035625
Content-Type: text/plain; charset=ISO-8859-1



On Thursday, June 20, 2013 9:50:55 AM UTC-5, Rene Rivera wrote:
>
>
> On Wed, Jun 19, 2013 at 1:37 PM, Jonathan Wakely wrote:
>
>>
> The const is in the wrong place on binary_tree::inorder_cfirst:
>>
>>     const_cursor  inorder_cfirst const() noexcept;
>>
>> Fixed, thanks.
>

After some deliberation I decided that I would remove inorder_*first() from
the containers to remove all ordering biases from the containers. They can
instead be implemented as friend specializations of the general inorder
algorithms.

Rene.

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_569_25094295.1371825035625
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<br><br>On Thursday, June 20, 2013 9:50:55 AM UTC-5, Rene Rivera wrote:<blo=
ckquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-=
left: 1px #ccc solid;padding-left: 1ex;"><div><br><div style=3D"color:rgb(8=
0,0,80)">On Wed, Jun 19, 2013 at 1:37 PM, Jonathan Wakely&nbsp;wrote:<br></=
div><div><div class=3D"gmail_quote"><div style=3D"color:rgb(80,0,80);font-f=
amily:arial,sans-serif"><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);b=
order-left-style:solid;padding-left:1ex"><div></div></blockquote></div><div=
 style=3D"color:rgb(80,0,80);font-family:arial,sans-serif"><br><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1=
px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:=
1ex">The const is in the wrong place on binary_tree::inorder_cfirst:<br><pr=
e style=3D"white-space:pre-wrap">    const_cursor  inorder_cfirst const() n=
oexcept;</pre></blockquote></div><div style=3D"font-family:arial,sans-serif=
">Fixed, thanks.</div></div></div></div></blockquote><div><br></div><div>Af=
ter some deliberation I decided that I would remove inorder_*first() from t=
he containers to remove all ordering biases from the containers. They can i=
nstead be implemented as friend specializations of the general inorder algo=
rithms.</div><div><br></div><div>Rene.</div>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_569_25094295.1371825035625--

.


Author: Rene Rivera <grafikrobot@gmail.com>
Date: Sat, 22 Jun 2013 13:04:05 -0700 (PDT)
Raw View
------=_Part_508_24092959.1371931446004
Content-Type: text/plain; charset=ISO-8859-1

I've submitted a "final" version to LWG. People can read that tagged
version at <http://tinyurl.com/n2cbht2>. I'm off to a trip tomorrow but
will try and continue any discussions (assuming I can acquire internet
access).

Rene.

On Friday, June 21, 2013 9:30:35 AM UTC-5, Rene Rivera wrote:
>
>
>
> On Thursday, June 20, 2013 9:50:55 AM UTC-5, Rene Rivera wrote:
>>
>>
>> On Wed, Jun 19, 2013 at 1:37 PM, Jonathan Wakely wrote:
>>
>>>
>> The const is in the wrong place on binary_tree::inorder_cfirst:
>>>
>>>     const_cursor  inorder_cfirst const() noexcept;
>>>
>>> Fixed, thanks.
>>
>
> After some deliberation I decided that I would remove inorder_*first()
> from the containers to remove all ordering biases from the containers. They
> can instead be implemented as friend specializations of the general inorder
> algorithms.
>
> Rene.
>

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_508_24092959.1371931446004
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I've submitted a "final" version to LWG. People can read that tagged versio=
n at &lt;http://tinyurl.com/n2cbht2&gt;. I'm off to a trip tomorrow but wil=
l try and continue any discussions (assuming I can acquire internet access)=
..<div><br></div><div>Rene.<br><br>On Friday, June 21, 2013 9:30:35 AM UTC-5=
, Rene Rivera wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;ma=
rgin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><br><br>On=
 Thursday, June 20, 2013 9:50:55 AM UTC-5, Rene Rivera wrote:<blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #cc=
c solid;padding-left:1ex"><div><br><div style=3D"color:rgb(80,0,80)">On Wed=
, Jun 19, 2013 at 1:37 PM, Jonathan Wakely&nbsp;wrote:<br></div><div><div c=
lass=3D"gmail_quote"><div style=3D"color:rgb(80,0,80);font-family:arial,san=
s-serif"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-styl=
e:solid;padding-left:1ex"><div></div></blockquote></div><div style=3D"color=
:rgb(80,0,80);font-family:arial,sans-serif"><br><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-=
color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The const =
is in the wrong place on binary_tree::inorder_cfirst:<br><pre style=3D"whit=
e-space:pre-wrap">    const_cursor  inorder_cfirst const() noexcept;</pre><=
/blockquote></div><div style=3D"font-family:arial,sans-serif">Fixed, thanks=
..</div></div></div></div></blockquote><div><br></div><div>After some delibe=
ration I decided that I would remove inorder_*first() from the containers t=
o remove all ordering biases from the containers. They can instead be imple=
mented as friend specializations of the general inorder algorithms.</div><d=
iv><br></div><div>Rene.</div></blockquote></div>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_508_24092959.1371931446004--

.


Author: stackmachine@hotmail.com
Date: Tue, 25 Jun 2013 11:01:46 -0700 (PDT)
Raw View
------=_Part_674_23292691.1372183306371
Content-Type: text/plain; charset=ISO-8859-1

What in the world is a nary tree?

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_674_23292691.1372183306371
Content-Type: text/html; charset=ISO-8859-1

What in the world is a nary tree?<br>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href="http://groups.google.com/a/isocpp.org/group/std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/</a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_674_23292691.1372183306371--

.


Author: =?ISO-8859-1?Q?Daniel_Kr=FCgler?= <daniel.kruegler@gmail.com>
Date: Tue, 25 Jun 2013 20:10:39 +0200
Raw View
2013/6/25  <stackmachine@hotmail.com>:
> What in the world is a nary tree?

I think it's actually written as "n-ary tree" and means a tree that
has no restriction to two child nodes.

See e.g.

http://www.cs.auckland.ac.nz/~jmor159/PLDS210/n_ary_trees.html

- Daniel

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



.


Author: stackmachine@hotmail.com
Date: Tue, 25 Jun 2013 11:52:12 -0700 (PDT)
Raw View
------=_Part_284_16840520.1372186332627
Content-Type: text/plain; charset=ISO-8859-1

Oh, I see. I wasn't aware that nary_tree is supposed to mean n-ary tree.
Perhaps the name of the class could be changed to n_ary_tree to make that
more clear?

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.



------=_Part_284_16840520.1372186332627
Content-Type: text/html; charset=ISO-8859-1

Oh, I see. I wasn't aware that nary_tree is supposed to mean n-ary tree. Perhaps the name of the class could be changed to n_ary_tree to make that more clear?<br>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href="http://groups.google.com/a/isocpp.org/group/std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/</a>.<br />
&nbsp;<br />
&nbsp;<br />

------=_Part_284_16840520.1372186332627--

.