Topic: Float the idea: Forward declaring inner classes
Author: xaxxon@gmail.com
Date: Mon, 20 Jun 2016 16:35:29 -0700 (PDT)
Raw View
------=_Part_5812_288450310.1466465729368
Content-Type: multipart/alternative;
boundary="----=_Part_5813_1355180422.1466465729369"
------=_Part_5813_1355180422.1466465729369
Content-Type: text/plain; charset=UTF-8
I've never written anything to this list before and am trying to follow the
instructions here: https://isocpp.org/std/submit-a-proposal
I'd like to allow forward declarations of inner classes. Here is a
situation I've run into where it seems that forward declaring the inner
classes would allow this to work:
class Outer1; // <== potentially optional
class Outer::Inner; //<== NEW
class Outer2; // <== potentially optional
class Outer2::Inner; //<== NEW
template<class T>
class SomeClass {
// !!error: no type named 'Inner' in 'Outer1' <== clang error in current c++
typename T::Inner * some_func();
};
class Outer1 : public SomeClass<Outer1> {
public:
class Inner {
};
};
class Outer2 : public SomeClass<Outer2> {
public:
class Inner {
};
};
While there are certainly workarounds, I find this organizational structure
to be useful in other languages and would have used it in c++ had it been
available.
Live code: https://godbolt.org/g/A5jd87
The workaround I've found is this, but the code doesn't match my intent
nearly as well.
class Outer1Inner {};
class Outer1 : public SomeClass<Outer1Inner> {};
Thank you for your feedback - either on the actual proposal or on proposal
procedure.
--Zac
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/299109ab-04d2-462f-8f50-ce31206e96b3%40isocpp.org.
------=_Part_5813_1355180422.1466465729369
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>I've never written anything to this list before a=
nd am trying to follow the instructions here:=C2=A0https://isocpp.org/std/s=
ubmit-a-proposal<br></div><div><br></div><div>I'd like to allow forward=
declarations of inner classes. =C2=A0Here is a situation I've run into=
where it seems that forward declaring the inner classes would allow this t=
o work:</div><div class=3D"prettyprint" style=3D"border: 1px solid rgb(187,=
187, 187); word-wrap: break-word; background-color: rgb(250, 250, 250);"><=
code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"><br><br></span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">class</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">Outer1</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> </span><span style=3D"color: #800;" class=3D"styled-by-prettify=
">// <=3D=3D potentially optional</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"=
styled-by-prettify">class</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-pret=
tify">Outer</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>::</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Inner</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #800;" class=3D"styled-by-prettify">//<=3D=3D NEW</span><span=
style=3D"color: #000;" class=3D"styled-by-prettify"><br><br><br></span><sp=
an style=3D"color: #008;" class=3D"styled-by-prettify">class</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #606;" class=3D"styled-by-prettify">Outer2</span><span style=3D"color:=
#660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #800;" class=3D"s=
tyled-by-prettify">// <=3D=3D potentially optional</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color:=
#008;" class=3D"styled-by-prettify">class</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">Outer2</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">::</span><span style=3D"color: #606;" class=3D"styled-b=
y-prettify">Inner</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #800;" class=3D"styled-by-prettify">//<=3D=
=3D NEW</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br=
><br><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">t=
emplate</span><span style=3D"color: #660;" class=3D"styled-by-prettify"><=
;</span><span style=3D"color: #008;" class=3D"styled-by-prettify">class</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</span><span=
style=3D"color: #660;" class=3D"styled-by-prettify">></span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"co=
lor: #008;" class=3D"styled-by-prettify">class</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" cl=
ass=3D"styled-by-prettify">SomeClass</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br></span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"><br></span><span style=3D"color: #800;" class=3D"styled-by-prettify">// !=
!error: no type named 'Inner' in 'Outer1' <=3D=3D clang =
error in current c++</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by=
-prettify">typename</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> T</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>::</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Inner</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">*</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> some_func</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">();</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br><br><br></span><span style=3D"color: #008;" c=
lass=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"style=
d-by-prettify">Outer1</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify=
">:</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span style=3D"color: #008;" class=3D"styled-by-prettify">public</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">SomeClass</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify"><</span><span style=3D"co=
lor: #606;" class=3D"styled-by-prettify">Outer1</span><span style=3D"color:=
#660;" class=3D"styled-by-prettify">></span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">{</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> <br>=C2=A0 </span><span style=3D"color: #008;" class=3D"sty=
led-by-prettify">public</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">:</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-prett=
ify">class</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Inner</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 </span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">};</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660;"=
class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br><br><br></span><span style=3D"color: #008;" cla=
ss=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-b=
y-prettify">Outer2</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">:=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><s=
pan style=3D"color: #008;" class=3D"styled-by-prettify">public</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"=
color: #606;" class=3D"styled-by-prettify">SomeClass</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify"><</span><span style=3D"color: =
#606;" class=3D"styled-by-prettify">Outer2</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">></span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">public</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">:</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=
=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-prettify">cla=
ss</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
<span style=3D"color: #606;" class=3D"styled-by-prettify">Inner</span><span=
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #=
000;" class=3D"styled-by-prettify"><br>=C2=A0 </span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">};</span></div></code></div><div><div><br></div></d=
iv><div><br></div><div>While there are certainly workarounds, I find this o=
rganizational structure to be useful in other languages and would have used=
it in c++ had it been available. =C2=A0=C2=A0</div><div><br></div><div>Liv=
e code:=C2=A0https://godbolt.org/g/A5jd87</div><div><br></div><div>The work=
around I've found is this, but the code doesn't match my intent nea=
rly as well. =C2=A0</div><div class=3D"prettyprint" style=3D"border: 1px so=
lid rgb(187, 187, 187); word-wrap: break-word; background-color: rgb(250, 2=
50, 250);"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span =
style=3D"color: #008;" class=3D"styled-by-prettify">class</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #606;" class=3D"styled-by-prettify">Outer1Inner</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;"=
class=3D"styled-by-prettify">{};</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">class</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-pretti=
fy">Outer1</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">:</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">public</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #=
606;" class=3D"styled-by-prettify">SomeClass</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify"><</span><span style=3D"color: #606;" c=
lass=3D"styled-by-prettify">Outer1Inner</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">></span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">{};</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br><br></span></div></code></div><div><br><br></div><div>Thank you=
for your feedback - either on the actual proposal or on proposal procedure=
..</div><div><br></div><div>--Zac</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/299109ab-04d2-462f-8f50-ce31206e96b3%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/299109ab-04d2-462f-8f50-ce31206e96b3=
%40isocpp.org</a>.<br />
------=_Part_5813_1355180422.1466465729369--
------=_Part_5812_288450310.1466465729368--
.
Author: "T. C." <rs2740@gmail.com>
Date: Mon, 20 Jun 2016 17:42:18 -0700 (PDT)
Raw View
------=_Part_1457_1346568539.1466469738269
Content-Type: multipart/alternative;
boundary="----=_Part_1458_241192018.1466469738270"
------=_Part_1458_241192018.1466469738270
Content-Type: text/plain; charset=UTF-8
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf
On Monday, June 20, 2016 at 7:35:29 PM UTC-4, xax...@gmail.com wrote:
>
> I've never written anything to this list before and am trying to follow
> the instructions here: https://isocpp.org/std/submit-a-proposal
>
> I'd like to allow forward declarations of inner classes. Here is a
> situation I've run into where it seems that forward declaring the inner
> classes would allow this to work:
>
>
> class Outer1; // <== potentially optional
> class Outer::Inner; //<== NEW
>
>
> class Outer2; // <== potentially optional
> class Outer2::Inner; //<== NEW
>
>
> template<class T>
> class SomeClass {
>
> // !!error: no type named 'Inner' in 'Outer1' <== clang error in current
> c++
> typename T::Inner * some_func();
> };
>
>
> class Outer1 : public SomeClass<Outer1> {
> public:
> class Inner {
> };
> };
>
>
> class Outer2 : public SomeClass<Outer2> {
> public:
> class Inner {
> };
> };
>
>
> While there are certainly workarounds, I find this organizational
> structure to be useful in other languages and would have used it in c++ had
> it been available.
>
> Live code: https://godbolt.org/g/A5jd87
>
> The workaround I've found is this, but the code doesn't match my intent
> nearly as well.
> class Outer1Inner {};
> class Outer1 : public SomeClass<Outer1Inner> {};
>
>
>
> Thank you for your feedback - either on the actual proposal or on proposal
> procedure.
>
> --Zac
>
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/74885fa3-1a38-4394-b017-9a102001f199%40isocpp.org.
------=_Part_1458_241192018.1466469738270
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0=
289r0.pdf<br><br>On Monday, June 20, 2016 at 7:35:29 PM UTC-4, xax...@gmail=
..com wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left=
: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><d=
iv>I've never written anything to this list before and am trying to fol=
low the instructions here:=C2=A0<a href=3D"https://isocpp.org/std/submit-a-=
proposal" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D=
9;https://www.google.com/url?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsubmit-a=
-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEpCYxvwG=
8Ig';return true;" onclick=3D"this.href=3D'https://www.google.com/u=
rl?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsubmit-a-proposal\x26sa\x3dD\x26sn=
tz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEpCYxvwG8Ig';return true;">htt=
ps://isocpp.org/std/<wbr>submit-a-proposal</a><br></div><div><br></div><div=
>I'd like to allow forward declarations of inner classes. =C2=A0Here is=
a situation I've run into where it seems that forward declaring the in=
ner classes would allow this to work:</div><div style=3D"border:1px solid r=
gb(187,187,187);word-wrap:break-word;background-color:rgb(250,250,250)"><co=
de><div><span style=3D"color:#000"><br><br></span><span style=3D"color:#008=
">class</span><span style=3D"color:#000"> </span><span style=3D"color:#606"=
>Outer1</span><span style=3D"color:#660">;</span><span style=3D"color:#000"=
> </span><span style=3D"color:#800">// <=3D=3D potentially optional</spa=
n><span style=3D"color:#000"><br></span><span style=3D"color:#008">class</s=
pan><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer</sp=
an><span style=3D"color:#660">::</span><span style=3D"color:#606">Inner</sp=
an><span style=3D"color:#660">;</span><span style=3D"color:#000"> </span><s=
pan style=3D"color:#800">//<=3D=3D NEW</span><span style=3D"color:#000">=
<br><br><br></span><span style=3D"color:#008">class</span><span style=3D"co=
lor:#000"> </span><span style=3D"color:#606">Outer2</span><span style=3D"co=
lor:#660">;</span><span style=3D"color:#000"> </span><span style=3D"color:#=
800">// <=3D=3D potentially optional</span><span style=3D"color:#000"><b=
r></span><span style=3D"color:#008">class</span><span style=3D"color:#000">=
</span><span style=3D"color:#606">Outer2</span><span style=3D"color:#660">=
::</span><span style=3D"color:#606">Inner</span><span style=3D"color:#660">=
;</span><span style=3D"color:#000"> </span><span style=3D"color:#800">//<=
;=3D=3D NEW</span><span style=3D"color:#000"><br><br><br></span><span style=
=3D"color:#008">template</span><span style=3D"color:#660"><</span><span =
style=3D"color:#008">class</span><span style=3D"color:#000"> T</span><span =
style=3D"color:#660">></span><span style=3D"color:#000"><br></span><span=
style=3D"color:#008">class</span><span style=3D"color:#000"> </span><span =
style=3D"color:#606">SomeClass</span><span style=3D"color:#000"> </span><sp=
an style=3D"color:#660">{</span><span style=3D"color:#000"><br></span><span=
style=3D"color:#000"><br></span><span style=3D"color:#800">// !!error: no =
type named 'Inner' in 'Outer1' <=3D=3D clang error in cu=
rrent c++</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D=
"color:#008">typename</span><span style=3D"color:#000"> T</span><span style=
=3D"color:#660">::</span><span style=3D"color:#606">Inner</span><span style=
=3D"color:#000"> </span><span style=3D"color:#660">*</span><span style=3D"c=
olor:#000"> some_func</span><span style=3D"color:#660">();</span><span styl=
e=3D"color:#000"><br></span><span style=3D"color:#660">};</span><span style=
=3D"color:#000"><br><br><br></span><span style=3D"color:#008">class</span><=
span style=3D"color:#000"> </span><span style=3D"color:#606">Outer1</span><=
span style=3D"color:#000"> </span><span style=3D"color:#660">:</span><span =
style=3D"color:#000"> </span><span style=3D"color:#008">public</span><span =
style=3D"color:#000"> </span><span style=3D"color:#606">SomeClass</span><sp=
an style=3D"color:#660"><</span><span style=3D"color:#606">Outer1</span>=
<span style=3D"color:#660">></span><span style=3D"color:#000"> </span><s=
pan style=3D"color:#660">{</span><span style=3D"color:#000"> <br>=C2=A0 </s=
pan><span style=3D"color:#008">public</span><span style=3D"color:#660">:</s=
pan><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#008"=
>class</span><span style=3D"color:#000"> </span><span style=3D"color:#606">=
Inner</span><span style=3D"color:#000"> </span><span style=3D"color:#660">{=
</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#6=
60">};</span><span style=3D"color:#000"><br></span><span style=3D"color:#66=
0">};</span><span style=3D"color:#000"><br><br><br></span><span style=3D"co=
lor:#008">class</span><span style=3D"color:#000"> </span><span style=3D"col=
or:#606">Outer2</span><span style=3D"color:#000"> </span><span style=3D"col=
or:#660">:</span><span style=3D"color:#000"> </span><span style=3D"color:#0=
08">public</span><span style=3D"color:#000"> </span><span style=3D"color:#6=
06">SomeClass</span><span style=3D"color:#660"><</span><span style=3D"co=
lor:#606">Outer2</span><span style=3D"color:#660">></span><span style=3D=
"color:#000"> </span><span style=3D"color:#660">{</span><span style=3D"colo=
r:#000"><br>=C2=A0 </span><span style=3D"color:#008">public</span><span sty=
le=3D"color:#660">:</span><span style=3D"color:#000"><br>=C2=A0 </span><spa=
n style=3D"color:#008">class</span><span style=3D"color:#000"> </span><span=
style=3D"color:#606">Inner</span><span style=3D"color:#000"> </span><span =
style=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=A0 </span><=
span style=3D"color:#660">};</span><span style=3D"color:#000"><br></span><s=
pan style=3D"color:#660">};</span></div></code></div><div><div><br></div></=
div><div><br></div><div>While there are certainly workarounds, I find this =
organizational structure to be useful in other languages and would have use=
d it in c++ had it been available. =C2=A0=C2=A0</div><div><br></div><div>Li=
ve code:=C2=A0<a href=3D"https://godbolt.org/g/A5jd87" target=3D"_blank" re=
l=3D"nofollow" onmousedown=3D"this.href=3D'https://www.google.com/url?q=
\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg\x=
3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQrw';return true;" onclick=3D"this.hre=
f=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2FA5=
jd87\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQrw&#=
39;;return true;">https://godbolt.org/g/<wbr>A5jd87</a></div><div><br></div=
><div>The workaround I've found is this, but the code doesn't match=
my intent nearly as well. =C2=A0</div><div style=3D"border:1px solid rgb(1=
87,187,187);word-wrap:break-word;background-color:rgb(250,250,250)"><code><=
div><span style=3D"color:#008">class</span><span style=3D"color:#000"> </sp=
an><span style=3D"color:#606">Outer1Inner</span><span style=3D"color:#000">=
</span><span style=3D"color:#660">{};</span><span style=3D"color:#000"><br=
></span><span style=3D"color:#008">class</span><span style=3D"color:#000"> =
</span><span style=3D"color:#606">Outer1</span><span style=3D"color:#000"> =
</span><span style=3D"color:#660">:</span><span style=3D"color:#000"> </spa=
n><span style=3D"color:#008">public</span><span style=3D"color:#000"> </spa=
n><span style=3D"color:#606">SomeClass</span><span style=3D"color:#660"><=
;</span><span style=3D"color:#606">Outer1Inner</span><span style=3D"color:#=
660">></span><span style=3D"color:#000"> </span><span style=3D"color:#66=
0">{};</span><span style=3D"color:#000"><br><br></span></div></code></div><=
div><br><br></div><div>Thank you for your feedback - either on the actual p=
roposal or on proposal procedure.</div><div><br></div><div>--Zac</div></div=
></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/74885fa3-1a38-4394-b017-9a102001f199%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/74885fa3-1a38-4394-b017-9a102001f199=
%40isocpp.org</a>.<br />
------=_Part_1458_241192018.1466469738270--
------=_Part_1457_1346568539.1466469738269--
.
Author: xaxxon@gmail.com
Date: Mon, 20 Jun 2016 17:43:18 -0700 (PDT)
Raw View
------=_Part_6169_2040403031.1466469798281
Content-Type: multipart/alternative;
boundary="----=_Part_6170_1254606263.1466469798281"
------=_Part_6170_1254606263.1466469798281
Content-Type: text/plain; charset=UTF-8
awesome, thank you.
On Monday, June 20, 2016 at 5:42:18 PM UTC-7, T. C. wrote:
>
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf
>
> On Monday, June 20, 2016 at 7:35:29 PM UTC-4, xax...@gmail.com wrote:
>>
>> I've never written anything to this list before and am trying to follow
>> the instructions here: https://isocpp.org/std/submit-a-proposal
>>
>> I'd like to allow forward declarations of inner classes. Here is a
>> situation I've run into where it seems that forward declaring the inner
>> classes would allow this to work:
>>
>>
>> class Outer1; // <== potentially optional
>> class Outer::Inner; //<== NEW
>>
>>
>> class Outer2; // <== potentially optional
>> class Outer2::Inner; //<== NEW
>>
>>
>> template<class T>
>> class SomeClass {
>>
>> // !!error: no type named 'Inner' in 'Outer1' <== clang error in current
>> c++
>> typename T::Inner * some_func();
>> };
>>
>>
>> class Outer1 : public SomeClass<Outer1> {
>> public:
>> class Inner {
>> };
>> };
>>
>>
>> class Outer2 : public SomeClass<Outer2> {
>> public:
>> class Inner {
>> };
>> };
>>
>>
>> While there are certainly workarounds, I find this organizational
>> structure to be useful in other languages and would have used it in c++ had
>> it been available.
>>
>> Live code: https://godbolt.org/g/A5jd87
>>
>> The workaround I've found is this, but the code doesn't match my intent
>> nearly as well.
>> class Outer1Inner {};
>> class Outer1 : public SomeClass<Outer1Inner> {};
>>
>>
>>
>> Thank you for your feedback - either on the actual proposal or on
>> proposal procedure.
>>
>> --Zac
>>
>
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/c7a261c7-99b3-4614-a7f7-dbafcb9b9ac9%40isocpp.org.
------=_Part_6170_1254606263.1466469798281
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">awesome, thank you.<br><br>On Monday, June 20, 2016 at 5:4=
2:18 PM UTC-7, T. C. wrote:<blockquote class=3D"gmail_quote" style=3D"margi=
n: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><di=
v dir=3D"ltr"><a href=3D"http://www.open-std.org/jtc1/sc22/wg21/docs/papers=
/2016/p0289r0.pdf" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.h=
ref=3D'http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.open-std.org%2Fj=
tc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2016%2Fp0289r0.pdf\x26sa\x3dD\x26sntz\x=
3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Iii5tU442rLP0FQ';return true;" onclick=
=3D"this.href=3D'http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.open-s=
td.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2016%2Fp0289r0.pdf\x26sa\x3dD=
\x26sntz\x3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Iii5tU442rLP0FQ';return true=
;">http://www.open-std.org/jtc1/<wbr>sc22/wg21/docs/papers/2016/<wbr>p0289r=
0.pdf</a><br><br>On Monday, June 20, 2016 at 7:35:29 PM UTC-4, <a>xax...@gm=
ail.com</a> wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0;margi=
n-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">=
<div>I've never written anything to this list before and am trying to f=
ollow the instructions here:=C2=A0<a href=3D"https://isocpp.org/std/submit-=
a-proposal" rel=3D"nofollow" target=3D"_blank" onmousedown=3D"this.href=3D&=
#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsubmit=
-a-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEpCYxv=
wG8Ig';return true;" onclick=3D"this.href=3D'https://www.google.com=
/url?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsubmit-a-proposal\x26sa\x3dD\x26=
sntz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEpCYxvwG8Ig';return true;">h=
ttps://isocpp.org/std/<wbr>submit-a-proposal</a><br></div><div><br></div><d=
iv>I'd like to allow forward declarations of inner classes. =C2=A0Here =
is a situation I've run into where it seems that forward declaring the =
inner classes would allow this to work:</div><div style=3D"border:1px solid=
rgb(187,187,187);word-wrap:break-word;background-color:rgb(250,250,250)"><=
code><div><span style=3D"color:#000"><br><br></span><span style=3D"color:#0=
08">class</span><span style=3D"color:#000"> </span><span style=3D"color:#60=
6">Outer1</span><span style=3D"color:#660">;</span><span style=3D"color:#00=
0"> </span><span style=3D"color:#800">// <=3D=3D potentially optional</s=
pan><span style=3D"color:#000"><br></span><span style=3D"color:#008">class<=
/span><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer</=
span><span style=3D"color:#660">::</span><span style=3D"color:#606">Inner</=
span><span style=3D"color:#660">;</span><span style=3D"color:#000"> </span>=
<span style=3D"color:#800">//<=3D=3D NEW</span><span style=3D"color:#000=
"><br><br><br></span><span style=3D"color:#008">class</span><span style=3D"=
color:#000"> </span><span style=3D"color:#606">Outer2</span><span style=3D"=
color:#660">;</span><span style=3D"color:#000"> </span><span style=3D"color=
:#800">// <=3D=3D potentially optional</span><span style=3D"color:#000">=
<br></span><span style=3D"color:#008">class</span><span style=3D"color:#000=
"> </span><span style=3D"color:#606">Outer2</span><span style=3D"color:#660=
">::</span><span style=3D"color:#606">Inner</span><span style=3D"color:#660=
">;</span><span style=3D"color:#000"> </span><span style=3D"color:#800">//&=
lt;=3D=3D NEW</span><span style=3D"color:#000"><br><br><br></span><span sty=
le=3D"color:#008">template</span><span style=3D"color:#660"><</span><spa=
n style=3D"color:#008">class</span><span style=3D"color:#000"> T</span><spa=
n style=3D"color:#660">></span><span style=3D"color:#000"><br></span><sp=
an style=3D"color:#008">class</span><span style=3D"color:#000"> </span><spa=
n style=3D"color:#606">SomeClass</span><span style=3D"color:#000"> </span><=
span style=3D"color:#660">{</span><span style=3D"color:#000"><br></span><sp=
an style=3D"color:#000"><br></span><span style=3D"color:#800">// !!error: n=
o type named 'Inner' in 'Outer1' <=3D=3D clang error in =
current c++</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=
=3D"color:#008">typename</span><span style=3D"color:#000"> T</span><span st=
yle=3D"color:#660">::</span><span style=3D"color:#606">Inner</span><span st=
yle=3D"color:#000"> </span><span style=3D"color:#660">*</span><span style=
=3D"color:#000"> some_func</span><span style=3D"color:#660">();</span><span=
style=3D"color:#000"><br></span><span style=3D"color:#660">};</span><span =
style=3D"color:#000"><br><br><br></span><span style=3D"color:#008">class</s=
pan><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer1</s=
pan><span style=3D"color:#000"> </span><span style=3D"color:#660">:</span><=
span style=3D"color:#000"> </span><span style=3D"color:#008">public</span><=
span style=3D"color:#000"> </span><span style=3D"color:#606">SomeClass</spa=
n><span style=3D"color:#660"><</span><span style=3D"color:#606">Outer1</=
span><span style=3D"color:#660">></span><span style=3D"color:#000"> </sp=
an><span style=3D"color:#660">{</span><span style=3D"color:#000"> <br>=C2=
=A0 </span><span style=3D"color:#008">public</span><span style=3D"color:#66=
0">:</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"colo=
r:#008">class</span><span style=3D"color:#000"> </span><span style=3D"color=
:#606">Inner</span><span style=3D"color:#000"> </span><span style=3D"color:=
#660">{</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"c=
olor:#660">};</span><span style=3D"color:#000"><br></span><span style=3D"co=
lor:#660">};</span><span style=3D"color:#000"><br><br><br></span><span styl=
e=3D"color:#008">class</span><span style=3D"color:#000"> </span><span style=
=3D"color:#606">Outer2</span><span style=3D"color:#000"> </span><span style=
=3D"color:#660">:</span><span style=3D"color:#000"> </span><span style=3D"c=
olor:#008">public</span><span style=3D"color:#000"> </span><span style=3D"c=
olor:#606">SomeClass</span><span style=3D"color:#660"><</span><span styl=
e=3D"color:#606">Outer2</span><span style=3D"color:#660">></span><span s=
tyle=3D"color:#000"> </span><span style=3D"color:#660">{</span><span style=
=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#008">public</span><=
span style=3D"color:#660">:</span><span style=3D"color:#000"><br>=C2=A0 </s=
pan><span style=3D"color:#008">class</span><span style=3D"color:#000"> </sp=
an><span style=3D"color:#606">Inner</span><span style=3D"color:#000"> </spa=
n><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=A0 =
</span><span style=3D"color:#660">};</span><span style=3D"color:#000"><br><=
/span><span style=3D"color:#660">};</span></div></code></div><div><div><br>=
</div></div><div><br></div><div>While there are certainly workarounds, I fi=
nd this organizational structure to be useful in other languages and would =
have used it in c++ had it been available. =C2=A0=C2=A0</div><div><br></div=
><div>Live code:=C2=A0<a href=3D"https://godbolt.org/g/A5jd87" rel=3D"nofol=
low" target=3D"_blank" onmousedown=3D"this.href=3D'https://www.google.c=
om/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2FA5jd87\x26sa\x3dD\x26sntz\x3d1\=
x26usg\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQrw';return true;" onclick=3D"=
this.href=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%=
2Fg%2FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgv=
u0lQrw';return true;">https://godbolt.org/g/<wbr>A5jd87</a></div><div><=
br></div><div>The workaround I've found is this, but the code doesn'=
;t match my intent nearly as well. =C2=A0</div><div style=3D"border:1px sol=
id rgb(187,187,187);word-wrap:break-word;background-color:rgb(250,250,250)"=
><code><div><span style=3D"color:#008">class</span><span style=3D"color:#00=
0"> </span><span style=3D"color:#606">Outer1Inner</span><span style=3D"colo=
r:#000"> </span><span style=3D"color:#660">{};</span><span style=3D"color:#=
000"><br></span><span style=3D"color:#008">class</span><span style=3D"color=
:#000"> </span><span style=3D"color:#606">Outer1</span><span style=3D"color=
:#000"> </span><span style=3D"color:#660">:</span><span style=3D"color:#000=
"> </span><span style=3D"color:#008">public</span><span style=3D"color:#000=
"> </span><span style=3D"color:#606">SomeClass</span><span style=3D"color:#=
660"><</span><span style=3D"color:#606">Outer1Inner</span><span style=3D=
"color:#660">></span><span style=3D"color:#000"> </span><span style=3D"c=
olor:#660">{};</span><span style=3D"color:#000"><br><br></span></div></code=
></div><div><br><br></div><div>Thank you for your feedback - either on the =
actual proposal or on proposal procedure.</div><div><br></div><div>--Zac</d=
iv></div></blockquote></div></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/c7a261c7-99b3-4614-a7f7-dbafcb9b9ac9%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/c7a261c7-99b3-4614-a7f7-dbafcb9b9ac9=
%40isocpp.org</a>.<br />
------=_Part_6170_1254606263.1466469798281--
------=_Part_6169_2040403031.1466469798281--
.
Author: xaxxon@gmail.com
Date: Mon, 20 Jun 2016 17:59:02 -0700 (PDT)
Raw View
------=_Part_6386_545839806.1466470742865
Content-Type: multipart/alternative;
boundary="----=_Part_6387_445172175.1466470742866"
------=_Part_6387_445172175.1466470742866
Content-Type: text/plain; charset=UTF-8
Oh. Less awesome that it was rejected.
On Monday, June 20, 2016 at 5:43:18 PM UTC-7, xax...@gmail.com wrote:
>
> awesome, thank you.
>
> On Monday, June 20, 2016 at 5:42:18 PM UTC-7, T. C. wrote:
>>
>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf
>>
>> On Monday, June 20, 2016 at 7:35:29 PM UTC-4, xax...@gmail.com wrote:
>>>
>>> I've never written anything to this list before and am trying to follow
>>> the instructions here: https://isocpp.org/std/submit-a-proposal
>>>
>>> I'd like to allow forward declarations of inner classes. Here is a
>>> situation I've run into where it seems that forward declaring the inner
>>> classes would allow this to work:
>>>
>>>
>>> class Outer1; // <== potentially optional
>>> class Outer::Inner; //<== NEW
>>>
>>>
>>> class Outer2; // <== potentially optional
>>> class Outer2::Inner; //<== NEW
>>>
>>>
>>> template<class T>
>>> class SomeClass {
>>>
>>> // !!error: no type named 'Inner' in 'Outer1' <== clang error in current
>>> c++
>>> typename T::Inner * some_func();
>>> };
>>>
>>>
>>> class Outer1 : public SomeClass<Outer1> {
>>> public:
>>> class Inner {
>>> };
>>> };
>>>
>>>
>>> class Outer2 : public SomeClass<Outer2> {
>>> public:
>>> class Inner {
>>> };
>>> };
>>>
>>>
>>> While there are certainly workarounds, I find this organizational
>>> structure to be useful in other languages and would have used it in c++ had
>>> it been available.
>>>
>>> Live code: https://godbolt.org/g/A5jd87
>>>
>>> The workaround I've found is this, but the code doesn't match my intent
>>> nearly as well.
>>> class Outer1Inner {};
>>> class Outer1 : public SomeClass<Outer1Inner> {};
>>>
>>>
>>>
>>> Thank you for your feedback - either on the actual proposal or on
>>> proposal procedure.
>>>
>>> --Zac
>>>
>>
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/394f2111-1e7f-461c-8513-121f13be7464%40isocpp.org.
------=_Part_6387_445172175.1466470742866
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Oh. =C2=A0Less awesome that it was rejected.<br><br>On Mon=
day, June 20, 2016 at 5:43:18 PM UTC-7, xax...@gmail.com wrote:<blockquote =
class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1p=
x #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">awesome, thank you.<br><b=
r>On Monday, June 20, 2016 at 5:42:18 PM UTC-7, T. C. wrote:<blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc=
solid;padding-left:1ex"><div dir=3D"ltr"><a href=3D"http://www.open-std.or=
g/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf" rel=3D"nofollow" target=3D"_=
blank" onmousedown=3D"this.href=3D'http://www.google.com/url?q\x3dhttp%=
3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2016%2Fp028=
9r0.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Iii5tU442rLP0F=
Q';return true;" onclick=3D"this.href=3D'http://www.google.com/url?=
q\x3dhttp%3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2=
016%2Fp0289r0.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Iii5=
tU442rLP0FQ';return true;">http://www.open-std.org/jtc1/<wbr>sc22/wg21/=
docs/papers/2016/<wbr>p0289r0.pdf</a><br><br>On Monday, June 20, 2016 at 7:=
35:29 PM UTC-4, <a>xax...@gmail.com</a> wrote:<blockquote class=3D"gmail_qu=
ote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding=
-left:1ex"><div dir=3D"ltr"><div>I've never written anything to this li=
st before and am trying to follow the instructions here:=C2=A0<a href=3D"ht=
tps://isocpp.org/std/submit-a-proposal" rel=3D"nofollow" target=3D"_blank" =
onmousedown=3D"this.href=3D'https://www.google.com/url?q\x3dhttps%3A%2F=
%2Fisocpp.org%2Fstd%2Fsubmit-a-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dA=
FQjCNGlLyCIYYQUZNTTJdUEpCYxvwG8Ig';return true;" onclick=3D"this.href=
=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsu=
bmit-a-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEp=
CYxvwG8Ig';return true;">https://isocpp.org/std/<wbr>submit-a-proposal<=
/a><br></div><div><br></div><div>I'd like to allow forward declarations=
of inner classes. =C2=A0Here is a situation I've run into where it see=
ms that forward declaring the inner classes would allow this to work:</div>=
<div style=3D"border:1px solid rgb(187,187,187);word-wrap:break-word;backgr=
ound-color:rgb(250,250,250)"><code><div><span style=3D"color:#000"><br><br>=
</span><span style=3D"color:#008">class</span><span style=3D"color:#000"> <=
/span><span style=3D"color:#606">Outer1</span><span style=3D"color:#660">;<=
/span><span style=3D"color:#000"> </span><span style=3D"color:#800">// <=
=3D=3D potentially optional</span><span style=3D"color:#000"><br></span><sp=
an style=3D"color:#008">class</span><span style=3D"color:#000"> </span><spa=
n style=3D"color:#606">Outer</span><span style=3D"color:#660">::</span><spa=
n style=3D"color:#606">Inner</span><span style=3D"color:#660">;</span><span=
style=3D"color:#000"> </span><span style=3D"color:#800">//<=3D=3D NEW</=
span><span style=3D"color:#000"><br><br><br></span><span style=3D"color:#00=
8">class</span><span style=3D"color:#000"> </span><span style=3D"color:#606=
">Outer2</span><span style=3D"color:#660">;</span><span style=3D"color:#000=
"> </span><span style=3D"color:#800">// <=3D=3D potentially optional</sp=
an><span style=3D"color:#000"><br></span><span style=3D"color:#008">class</=
span><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer2</=
span><span style=3D"color:#660">::</span><span style=3D"color:#606">Inner</=
span><span style=3D"color:#660">;</span><span style=3D"color:#000"> </span>=
<span style=3D"color:#800">//<=3D=3D NEW</span><span style=3D"color:#000=
"><br><br><br></span><span style=3D"color:#008">template</span><span style=
=3D"color:#660"><</span><span style=3D"color:#008">class</span><span sty=
le=3D"color:#000"> T</span><span style=3D"color:#660">></span><span styl=
e=3D"color:#000"><br></span><span style=3D"color:#008">class</span><span st=
yle=3D"color:#000"> </span><span style=3D"color:#606">SomeClass</span><span=
style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span styl=
e=3D"color:#000"><br></span><span style=3D"color:#000"><br></span><span sty=
le=3D"color:#800">// !!error: no type named 'Inner' in 'Outer1&=
#39; <=3D=3D clang error in current c++</span><span style=3D"color:#000"=
><br>=C2=A0 </span><span style=3D"color:#008">typename</span><span style=3D=
"color:#000"> T</span><span style=3D"color:#660">::</span><span style=3D"co=
lor:#606">Inner</span><span style=3D"color:#000"> </span><span style=3D"col=
or:#660">*</span><span style=3D"color:#000"> some_func</span><span style=3D=
"color:#660">();</span><span style=3D"color:#000"><br></span><span style=3D=
"color:#660">};</span><span style=3D"color:#000"><br><br><br></span><span s=
tyle=3D"color:#008">class</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#606">Outer1</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#660">:</span><span style=3D"color:#000"> </span><span style=
=3D"color:#008">public</span><span style=3D"color:#000"> </span><span style=
=3D"color:#606">SomeClass</span><span style=3D"color:#660"><</span><span=
style=3D"color:#606">Outer1</span><span style=3D"color:#660">></span><s=
pan style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span s=
tyle=3D"color:#000"> <br>=C2=A0 </span><span style=3D"color:#008">public</s=
pan><span style=3D"color:#660">:</span><span style=3D"color:#000"><br>=C2=
=A0 </span><span style=3D"color:#008">class</span><span style=3D"color:#000=
"> </span><span style=3D"color:#606">Inner</span><span style=3D"color:#000"=
> </span><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=
=C2=A0 </span><span style=3D"color:#660">};</span><span style=3D"color:#000=
"><br></span><span style=3D"color:#660">};</span><span style=3D"color:#000"=
><br><br><br></span><span style=3D"color:#008">class</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#606">Outer2</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#660">:</span><span style=3D"color:=
#000"> </span><span style=3D"color:#008">public</span><span style=3D"color:=
#000"> </span><span style=3D"color:#606">SomeClass</span><span style=3D"col=
or:#660"><</span><span style=3D"color:#606">Outer2</span><span style=3D"=
color:#660">></span><span style=3D"color:#000"> </span><span style=3D"co=
lor:#660">{</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=
=3D"color:#008">public</span><span style=3D"color:#660">:</span><span style=
=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#008">class</span><s=
pan style=3D"color:#000"> </span><span style=3D"color:#606">Inner</span><sp=
an style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span st=
yle=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#660">};</span><s=
pan style=3D"color:#000"><br></span><span style=3D"color:#660">};</span></d=
iv></code></div><div><div><br></div></div><div><br></div><div>While there a=
re certainly workarounds, I find this organizational structure to be useful=
in other languages and would have used it in c++ had it been available. =
=C2=A0=C2=A0</div><div><br></div><div>Live code:=C2=A0<a href=3D"https://go=
dbolt.org/g/A5jd87" rel=3D"nofollow" target=3D"_blank" onmousedown=3D"this.=
href=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2=
FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQr=
w';return true;" onclick=3D"this.href=3D'https://www.google.com/url=
?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg=
\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQrw';return true;">https://godbolt.o=
rg/g/<wbr>A5jd87</a></div><div><br></div><div>The workaround I've found=
is this, but the code doesn't match my intent nearly as well. =C2=A0</=
div><div style=3D"border:1px solid rgb(187,187,187);word-wrap:break-word;ba=
ckground-color:rgb(250,250,250)"><code><div><span style=3D"color:#008">clas=
s</span><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer=
1Inner</span><span style=3D"color:#000"> </span><span style=3D"color:#660">=
{};</span><span style=3D"color:#000"><br></span><span style=3D"color:#008">=
class</span><span style=3D"color:#000"> </span><span style=3D"color:#606">O=
uter1</span><span style=3D"color:#000"> </span><span style=3D"color:#660">:=
</span><span style=3D"color:#000"> </span><span style=3D"color:#008">public=
</span><span style=3D"color:#000"> </span><span style=3D"color:#606">SomeCl=
ass</span><span style=3D"color:#660"><</span><span style=3D"color:#606">=
Outer1Inner</span><span style=3D"color:#660">></span><span style=3D"colo=
r:#000"> </span><span style=3D"color:#660">{};</span><span style=3D"color:#=
000"><br><br></span></div></code></div><div><br><br></div><div>Thank you fo=
r your feedback - either on the actual proposal or on proposal procedure.</=
div><div><br></div><div>--Zac</div></div></blockquote></div></blockquote></=
div></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/394f2111-1e7f-461c-8513-121f13be7464%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/394f2111-1e7f-461c-8513-121f13be7464=
%40isocpp.org</a>.<br />
------=_Part_6387_445172175.1466470742866--
------=_Part_6386_545839806.1466470742865--
.
Author: "T. C." <rs2740@gmail.com>
Date: Mon, 20 Jun 2016 18:05:24 -0700 (PDT)
Raw View
------=_Part_5177_1020434630.1466471124457
Content-Type: multipart/alternative;
boundary="----=_Part_5178_904814229.1466471124467"
------=_Part_5178_904814229.1466471124467
Content-Type: text/plain; charset=UTF-8
It was not rejected. According to [1], EWG apparently liked the idea but
thought it needs more work.
[1]
https://botondballo.wordpress.com/2016/03/21/trip-report-c-standards-meeting-in-jacksonville-february-2016/
On Monday, June 20, 2016 at 8:59:02 PM UTC-4, xax...@gmail.com wrote:
>
> Oh. Less awesome that it was rejected.
>
> On Monday, June 20, 2016 at 5:43:18 PM UTC-7, xax...@gmail.com wrote:
>>
>> awesome, thank you.
>>
>> On Monday, June 20, 2016 at 5:42:18 PM UTC-7, T. C. wrote:
>>>
>>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf
>>>
>>> On Monday, June 20, 2016 at 7:35:29 PM UTC-4, xax...@gmail.com wrote:
>>>>
>>>> I've never written anything to this list before and am trying to follow
>>>> the instructions here: https://isocpp.org/std/submit-a-proposal
>>>>
>>>> I'd like to allow forward declarations of inner classes. Here is a
>>>> situation I've run into where it seems that forward declaring the inner
>>>> classes would allow this to work:
>>>>
>>>>
>>>> class Outer1; // <== potentially optional
>>>> class Outer::Inner; //<== NEW
>>>>
>>>>
>>>> class Outer2; // <== potentially optional
>>>> class Outer2::Inner; //<== NEW
>>>>
>>>>
>>>> template<class T>
>>>> class SomeClass {
>>>>
>>>> // !!error: no type named 'Inner' in 'Outer1' <== clang error in
>>>> current c++
>>>> typename T::Inner * some_func();
>>>> };
>>>>
>>>>
>>>> class Outer1 : public SomeClass<Outer1> {
>>>> public:
>>>> class Inner {
>>>> };
>>>> };
>>>>
>>>>
>>>> class Outer2 : public SomeClass<Outer2> {
>>>> public:
>>>> class Inner {
>>>> };
>>>> };
>>>>
>>>>
>>>> While there are certainly workarounds, I find this organizational
>>>> structure to be useful in other languages and would have used it in c++ had
>>>> it been available.
>>>>
>>>> Live code: https://godbolt.org/g/A5jd87
>>>>
>>>> The workaround I've found is this, but the code doesn't match my intent
>>>> nearly as well.
>>>> class Outer1Inner {};
>>>> class Outer1 : public SomeClass<Outer1Inner> {};
>>>>
>>>>
>>>>
>>>> Thank you for your feedback - either on the actual proposal or on
>>>> proposal procedure.
>>>>
>>>> --Zac
>>>>
>>>
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/b8330f95-9731-446f-b576-ec731390cd85%40isocpp.org.
------=_Part_5178_904814229.1466471124467
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">It was not rejected. According to [1], EWG apparently like=
d the idea but thought it needs more work.<div><br></div><div>[1] https://b=
otondballo.wordpress.com/2016/03/21/trip-report-c-standards-meeting-in-jack=
sonville-february-2016/<br><div><br>On Monday, June 20, 2016 at 8:59:02 PM =
UTC-4, xax...@gmail.com wrote:<blockquote class=3D"gmail_quote" style=3D"ma=
rgin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">=
<div dir=3D"ltr">Oh. =C2=A0Less awesome that it was rejected.<br><br>On Mon=
day, June 20, 2016 at 5:43:18 PM UTC-7, <a>xax...@gmail.com</a> wrote:<bloc=
kquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-lef=
t:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">awesome, thank you.<br>=
<br>On Monday, June 20, 2016 at 5:42:18 PM UTC-7, T. C. wrote:<blockquote c=
lass=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #c=
cc solid;padding-left:1ex"><div dir=3D"ltr"><a href=3D"http://www.open-std.=
org/jtc1/sc22/wg21/docs/papers/2016/p0289r0.pdf" rel=3D"nofollow" target=3D=
"_blank" onmousedown=3D"this.href=3D'http://www.google.com/url?q\x3dhtt=
p%3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2016%2Fp0=
289r0.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Iii5tU442rLP=
0FQ';return true;" onclick=3D"this.href=3D'http://www.google.com/ur=
l?q\x3dhttp%3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2=
F2016%2Fp0289r0.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGqKyQh-vd7CE3Ii=
i5tU442rLP0FQ';return true;">http://www.open-std.org/jtc1/<wbr>sc22/wg2=
1/docs/papers/2016/<wbr>p0289r0.pdf</a><br><br>On Monday, June 20, 2016 at =
7:35:29 PM UTC-4, <a>xax...@gmail.com</a> wrote:<blockquote class=3D"gmail_=
quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;paddi=
ng-left:1ex"><div dir=3D"ltr"><div>I've never written anything to this =
list before and am trying to follow the instructions here:=C2=A0<a href=3D"=
https://isocpp.org/std/submit-a-proposal" rel=3D"nofollow" target=3D"_blank=
" onmousedown=3D"this.href=3D'https://www.google.com/url?q\x3dhttps%3A%=
2F%2Fisocpp.org%2Fstd%2Fsubmit-a-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3=
dAFQjCNGlLyCIYYQUZNTTJdUEpCYxvwG8Ig';return true;" onclick=3D"this.href=
=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fisocpp.org%2Fstd%2Fsu=
bmit-a-proposal\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGlLyCIYYQUZNTTJdUEp=
CYxvwG8Ig';return true;">https://isocpp.org/std/<wbr>submit-a-proposal<=
/a><br></div><div><br></div><div>I'd like to allow forward declarations=
of inner classes. =C2=A0Here is a situation I've run into where it see=
ms that forward declaring the inner classes would allow this to work:</div>=
<div style=3D"border:1px solid rgb(187,187,187);word-wrap:break-word;backgr=
ound-color:rgb(250,250,250)"><code><div><span style=3D"color:#000"><br><br>=
</span><span style=3D"color:#008">class</span><span style=3D"color:#000"> <=
/span><span style=3D"color:#606">Outer1</span><span style=3D"color:#660">;<=
/span><span style=3D"color:#000"> </span><span style=3D"color:#800">// <=
=3D=3D potentially optional</span><span style=3D"color:#000"><br></span><sp=
an style=3D"color:#008">class</span><span style=3D"color:#000"> </span><spa=
n style=3D"color:#606">Outer</span><span style=3D"color:#660">::</span><spa=
n style=3D"color:#606">Inner</span><span style=3D"color:#660">;</span><span=
style=3D"color:#000"> </span><span style=3D"color:#800">//<=3D=3D NEW</=
span><span style=3D"color:#000"><br><br><br></span><span style=3D"color:#00=
8">class</span><span style=3D"color:#000"> </span><span style=3D"color:#606=
">Outer2</span><span style=3D"color:#660">;</span><span style=3D"color:#000=
"> </span><span style=3D"color:#800">// <=3D=3D potentially optional</sp=
an><span style=3D"color:#000"><br></span><span style=3D"color:#008">class</=
span><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer2</=
span><span style=3D"color:#660">::</span><span style=3D"color:#606">Inner</=
span><span style=3D"color:#660">;</span><span style=3D"color:#000"> </span>=
<span style=3D"color:#800">//<=3D=3D NEW</span><span style=3D"color:#000=
"><br><br><br></span><span style=3D"color:#008">template</span><span style=
=3D"color:#660"><</span><span style=3D"color:#008">class</span><span sty=
le=3D"color:#000"> T</span><span style=3D"color:#660">></span><span styl=
e=3D"color:#000"><br></span><span style=3D"color:#008">class</span><span st=
yle=3D"color:#000"> </span><span style=3D"color:#606">SomeClass</span><span=
style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span styl=
e=3D"color:#000"><br></span><span style=3D"color:#000"><br></span><span sty=
le=3D"color:#800">// !!error: no type named 'Inner' in 'Outer1&=
#39; <=3D=3D clang error in current c++</span><span style=3D"color:#000"=
><br>=C2=A0 </span><span style=3D"color:#008">typename</span><span style=3D=
"color:#000"> T</span><span style=3D"color:#660">::</span><span style=3D"co=
lor:#606">Inner</span><span style=3D"color:#000"> </span><span style=3D"col=
or:#660">*</span><span style=3D"color:#000"> some_func</span><span style=3D=
"color:#660">();</span><span style=3D"color:#000"><br></span><span style=3D=
"color:#660">};</span><span style=3D"color:#000"><br><br><br></span><span s=
tyle=3D"color:#008">class</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#606">Outer1</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#660">:</span><span style=3D"color:#000"> </span><span style=
=3D"color:#008">public</span><span style=3D"color:#000"> </span><span style=
=3D"color:#606">SomeClass</span><span style=3D"color:#660"><</span><span=
style=3D"color:#606">Outer1</span><span style=3D"color:#660">></span><s=
pan style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span s=
tyle=3D"color:#000"> <br>=C2=A0 </span><span style=3D"color:#008">public</s=
pan><span style=3D"color:#660">:</span><span style=3D"color:#000"><br>=C2=
=A0 </span><span style=3D"color:#008">class</span><span style=3D"color:#000=
"> </span><span style=3D"color:#606">Inner</span><span style=3D"color:#000"=
> </span><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=
=C2=A0 </span><span style=3D"color:#660">};</span><span style=3D"color:#000=
"><br></span><span style=3D"color:#660">};</span><span style=3D"color:#000"=
><br><br><br></span><span style=3D"color:#008">class</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#606">Outer2</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#660">:</span><span style=3D"color:=
#000"> </span><span style=3D"color:#008">public</span><span style=3D"color:=
#000"> </span><span style=3D"color:#606">SomeClass</span><span style=3D"col=
or:#660"><</span><span style=3D"color:#606">Outer2</span><span style=3D"=
color:#660">></span><span style=3D"color:#000"> </span><span style=3D"co=
lor:#660">{</span><span style=3D"color:#000"><br>=C2=A0 </span><span style=
=3D"color:#008">public</span><span style=3D"color:#660">:</span><span style=
=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#008">class</span><s=
pan style=3D"color:#000"> </span><span style=3D"color:#606">Inner</span><sp=
an style=3D"color:#000"> </span><span style=3D"color:#660">{</span><span st=
yle=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#660">};</span><s=
pan style=3D"color:#000"><br></span><span style=3D"color:#660">};</span></d=
iv></code></div><div><div><br></div></div><div><br></div><div>While there a=
re certainly workarounds, I find this organizational structure to be useful=
in other languages and would have used it in c++ had it been available. =
=C2=A0=C2=A0</div><div><br></div><div>Live code:=C2=A0<a href=3D"https://go=
dbolt.org/g/A5jd87" rel=3D"nofollow" target=3D"_blank" onmousedown=3D"this.=
href=3D'https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2=
FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQr=
w';return true;" onclick=3D"this.href=3D'https://www.google.com/url=
?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fg%2FA5jd87\x26sa\x3dD\x26sntz\x3d1\x26usg=
\x3dAFQjCNGEnO07UvG6LV1toCE0Qsgvu0lQrw';return true;">https://godbolt.o=
rg/g/<wbr>A5jd87</a></div><div><br></div><div>The workaround I've found=
is this, but the code doesn't match my intent nearly as well. =C2=A0</=
div><div style=3D"border:1px solid rgb(187,187,187);word-wrap:break-word;ba=
ckground-color:rgb(250,250,250)"><code><div><span style=3D"color:#008">clas=
s</span><span style=3D"color:#000"> </span><span style=3D"color:#606">Outer=
1Inner</span><span style=3D"color:#000"> </span><span style=3D"color:#660">=
{};</span><span style=3D"color:#000"><br></span><span style=3D"color:#008">=
class</span><span style=3D"color:#000"> </span><span style=3D"color:#606">O=
uter1</span><span style=3D"color:#000"> </span><span style=3D"color:#660">:=
</span><span style=3D"color:#000"> </span><span style=3D"color:#008">public=
</span><span style=3D"color:#000"> </span><span style=3D"color:#606">SomeCl=
ass</span><span style=3D"color:#660"><</span><span style=3D"color:#606">=
Outer1Inner</span><span style=3D"color:#660">></span><span style=3D"colo=
r:#000"> </span><span style=3D"color:#660">{};</span><span style=3D"color:#=
000"><br><br></span></div></code></div><div><br><br></div><div>Thank you fo=
r your feedback - either on the actual proposal or on proposal procedure.</=
div><div><br></div><div>--Zac</div></div></blockquote></div></blockquote></=
div></blockquote></div></blockquote></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b8330f95-9731-446f-b576-ec731390cd85%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b8330f95-9731-446f-b576-ec731390cd85=
%40isocpp.org</a>.<br />
------=_Part_5178_904814229.1466471124467--
------=_Part_5177_1020434630.1466471124457--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Mon, 20 Jun 2016 18:32:32 -0700 (PDT)
Raw View
------=_Part_5197_1243152669.1466472752882
Content-Type: multipart/alternative;
boundary="----=_Part_5198_1877194053.1466472752882"
------=_Part_5198_1877194053.1466472752882
Content-Type: text/plain; charset=UTF-8
And FYI: the correct term is "nested classes". The term "inner class" is
primarily a Java term that has additional features that C++ nested classes
don't have.
--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/6214dca6-b1b8-4ab6-8611-0698b57ea280%40isocpp.org.
------=_Part_5198_1877194053.1466472752882
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">And FYI: the correct term is "nested classes". T=
he term "inner class" is primarily a Java term that has additiona=
l features that C++ nested classes don't have.<br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/6214dca6-b1b8-4ab6-8611-0698b57ea280%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/6214dca6-b1b8-4ab6-8611-0698b57ea280=
%40isocpp.org</a>.<br />
------=_Part_5198_1877194053.1466472752882--
------=_Part_5197_1243152669.1466472752882--
.