Topic: Yet another 'strong typedef' discussion


Author: "dgutson ." <danielgutson@gmail.com>
Date: Wed, 21 Oct 2015 09:04:37 -0300
Raw View
--089e0115ec10bbc10405229c2e08
Content-Type: text/plain; charset=UTF-8

While we are implementing a gcc extension for a "strong typedef" which
basically copies a type as a brand new type (only for user-defined so far),
I'd want to ask: what's the foundamental obstacle that prevents C++ to have
a strong typedef besides the alias? Lack of consensus regarding what it
means among people?

Thanks,

    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/.

--089e0115ec10bbc10405229c2e08
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<p dir=3D"ltr">While we are implementing a gcc extension for a &quot;strong=
 typedef&quot; which basically copies a type as a brand new type (only for =
user-defined so far), I&#39;d want to ask: what&#39;s the foundamental obst=
acle that prevents C++ to have a strong typedef besides the alias? Lack of =
consensus regarding what it means among people?</p>
<p dir=3D"ltr">Thanks,</p>
<p dir=3D"ltr">=C2=A0=C2=A0=C2=A0 Daniel.</p>

<p></p>

-- <br />
<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 <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 />
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 />

--089e0115ec10bbc10405229c2e08--

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Wed, 21 Oct 2015 14:16:07 +0200
Raw View
--047d7b6250e0d0aab505229c5781
Content-Type: text/plain; charset=UTF-8

On Wed, Oct 21, 2015 at 2:04 PM, dgutson . <danielgutson@gmail.com> wrote:

> While we are implementing a gcc extension for a "strong typedef" which
> basically copies a type as a brand new type (only for user-defined so far),
> I'd want to ask: what's the foundamental obstacle that prevents C++ to have
> a strong typedef besides the alias? Lack of consensus regarding what it
> means among people?
>
> I think the Walter Brown line of proposals regarding strong typedefs is
the main line.  I guess I'd start by looking at the corresponding EWG
discussion/issues/notes on those.

--

---
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/.

--047d7b6250e0d0aab505229c5781
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On W=
ed, Oct 21, 2015 at 2:04 PM, dgutson . <span dir=3D"ltr">&lt;<a href=3D"mai=
lto:danielgutson@gmail.com" target=3D"_blank">danielgutson@gmail.com</a>&gt=
;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
..8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir=3D"ltr">While we a=
re implementing a gcc extension for a &quot;strong typedef&quot; which basi=
cally copies a type as a brand new type (only for user-defined so far), I&#=
39;d want to ask: what&#39;s the foundamental obstacle that prevents C++ to=
 have a strong typedef besides the alias? Lack of consensus regarding what =
it means among people?</p>
<p dir=3D"ltr"></p></blockquote></div></div><div class=3D"gmail_extra">I th=
ink the Walter Brown line of proposals regarding strong typedefs is the mai=
n line.=C2=A0 I guess I&#39;d start by looking at the corresponding EWG dis=
cussion/issues/notes on those.</div><div class=3D"gmail_extra"><br></div></=
div>

<p></p>

-- <br />
<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 <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 />
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 />

--047d7b6250e0d0aab505229c5781--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Wed, 21 Oct 2015 05:44:59 -0700 (PDT)
Raw View
------=_Part_500_1217258707.1445431499167
Content-Type: multipart/alternative;
 boundary="----=_Part_501_213793034.1445431499167"

------=_Part_501_213793034.1445431499167
Content-Type: text/plain; charset=UTF-8

On Wednesday, October 21, 2015 at 8:04:39 AM UTC-4, dgutson wrote:
>
> While we are implementing a gcc extension for a "strong typedef" which
> basically copies a type as a brand new type (only for user-defined so far),
> I'd want to ask: what's the foundamental obstacle that prevents C++ to have
> a strong typedef besides the alias?
>

"Besides the alias"? If you're referring to the syntax, that is, generally
speaking, the *least* contentious aspect of the concept.

The things that have kept it from being standardized are that in C++,
"strong alias" is *not* a simple thing.

Having the ability to create an alias type that is not implicitly
convertible to its root type *sounds* simple enough. But what does it mean
in practice?

Conceptually, you can think of it as being a privately derived class from
the root class. However none of the root class functions actually take an
object of the alias type. So if the root class `root` had a function `void
foo(const root &v);`, what should the alias type's version be? Should it's
member functions have a version of `foo` that takes a `root` or the alias
type? Or... what about both?

And speaking of interfaces, what about *non-member* functions? Sometimes
such functions are considered part of a type's interface. How useful would
a strong typedef of `tuple` be if `std::get` didn't come along for the ride?

And those don't even cover the question of exactly how strong you want the
alias to be. For some people, implicit conversion is OK; they just want the
new type to be considered different as far as overload resolution is
concerned. I might make a std::string alias where it's fine if you know
it's an alias, and you can convert it as you see fit. I just want to know
when you're really passing one and perhaps `= delete` some functions when
you're passing the wrong thing. For other needs, you want a real, solid,
strong typedef where nobody can do that implicit conversion.

Outside of a cast operation, of course.

As an example of this naive approach, see P0027 <http://wg21.link/P0027>.
It's a well-meaning proposal, but flat out doesn't answer the important
questions that the technique requires.

--

---
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_501_213793034.1445431499167
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Wednesday, October 21, 2015 at 8:04:39 AM UTC-4, dgutso=
n wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0=
..8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><p dir=3D"ltr">While w=
e are implementing a gcc extension for a &quot;strong typedef&quot; which b=
asically copies a type as a brand new type (only for user-defined so far), =
I&#39;d want to ask: what&#39;s the foundamental obstacle that prevents C++=
 to have a strong typedef besides the alias?</p></blockquote><div><br>&quot=
;Besides the alias&quot;? If you&#39;re referring to the syntax, that is, g=
enerally speaking, the <i>least</i> contentious aspect of the concept.<br><=
br>The things that have kept it from being standardized are that in C++, &q=
uot;strong alias&quot; is <i>not</i> a simple thing.<br><br>Having the abil=
ity to create an alias type that is not implicitly convertible to its root =
type <i>sounds</i> simple enough. But what does it mean in practice?<br><br=
>Conceptually, you can think of it as being a privately derived class from =
the root class. However none of the root class functions actually take an o=
bject of the alias type. So if the root class `root` had a function `void f=
oo(const root &amp;v);`, what should the alias type&#39;s version be? Shoul=
d it&#39;s member functions have a version of `foo` that takes a `root` or =
the alias type? Or... what about both?<br><br>And speaking of interfaces, w=
hat about <i>non-member</i> functions? Sometimes such functions are conside=
red part of a type&#39;s interface. How useful would a strong typedef of `t=
uple` be if `std::get` didn&#39;t come along for the ride?<br><br>And those=
 don&#39;t even cover the question of exactly how strong you want the alias=
 to be. For some people, implicit conversion is OK; they just want the new =
type to be considered different as far as overload resolution is concerned.=
 I might make a std::string alias where it&#39;s fine if you know it&#39;s =
an alias, and you can convert it as you see fit. I just want to know when y=
ou&#39;re really passing one and perhaps `=3D delete` some functions when y=
ou&#39;re passing the wrong thing. For other needs, you want a real, solid,=
 strong typedef where nobody can do that implicit conversion.<br><br>Outsid=
e of a cast operation, of course.<br><br>As an example of this naive approa=
ch, see <a href=3D"http://wg21.link/P0027">P0027</a>. It&#39;s a well-meani=
ng proposal, but flat out doesn&#39;t answer the important questions that t=
he technique requires.</div></div>

<p></p>

-- <br />
<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 <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 />
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 />

------=_Part_501_213793034.1445431499167--
------=_Part_500_1217258707.1445431499167--

.


Author: Hyman Rosen <hyman.rosen@gmail.com>
Date: Wed, 21 Oct 2015 16:48:28 -0400
Raw View
In Ada, these are called derived types.  It is instructive to read the
Ada Rationale about them,
<http://archive.adaic.com/standards/83rat/html/ratl-07-02.html#7.2>,
to at least get a sense of how that language dealt with these
questions (25 years ago!)

On Wed, Oct 21, 2015 at 8:44 AM, Nicol Bolas <jmckesson@gmail.com> wrote:
> On Wednesday, October 21, 2015 at 8:04:39 AM UTC-4, dgutson wrote:
>>
>> While we are implementing a gcc extension for a "strong typedef" which
>> basically copies a type as a brand new type (only for user-defined so far),
>> I'd want to ask: what's the foundamental obstacle that prevents C++ to have
>> a strong typedef besides the alias?
>
>
> "Besides the alias"? If you're referring to the syntax, that is, generally
> speaking, the least contentious aspect of the concept.
>
> The things that have kept it from being standardized are that in C++,
> "strong alias" is not a simple thing.
>
> Having the ability to create an alias type that is not implicitly
> convertible to its root type sounds simple enough. But what does it mean in
> practice?
>
> Conceptually, you can think of it as being a privately derived class from
> the root class. However none of the root class functions actually take an
> object of the alias type. So if the root class `root` had a function `void
> foo(const root &v);`, what should the alias type's version be? Should it's
> member functions have a version of `foo` that takes a `root` or the alias
> type? Or... what about both?
>
> And speaking of interfaces, what about non-member functions? Sometimes such
> functions are considered part of a type's interface. How useful would a
> strong typedef of `tuple` be if `std::get` didn't come along for the ride?
>
> And those don't even cover the question of exactly how strong you want the
> alias to be. For some people, implicit conversion is OK; they just want the
> new type to be considered different as far as overload resolution is
> concerned. I might make a std::string alias where it's fine if you know it's
> an alias, and you can convert it as you see fit. I just want to know when
> you're really passing one and perhaps `= delete` some functions when you're
> passing the wrong thing. For other needs, you want a real, solid, strong
> typedef where nobody can do that implicit conversion.
>
> Outside of a cast operation, of course.
>
> As an example of this naive approach, see P0027. It's a well-meaning
> proposal, but flat out doesn't answer the important questions that the
> technique requires.
>
> --
>
> ---
> 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/.

--

---
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: Nicol Bolas <jmckesson@gmail.com>
Date: Wed, 21 Oct 2015 14:05:28 -0700 (PDT)
Raw View
------=_Part_102_901271035.1445461528693
Content-Type: multipart/alternative;
 boundary="----=_Part_103_569068979.1445461528694"

------=_Part_103_569068979.1445461528694
Content-Type: text/plain; charset=UTF-8



On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wrote:
>
> In Ada, these are called derived types.  It is instructive to read the
> Ada Rationale about them,
> <http://archive.adaic.com/standards/83rat/html/ratl-07-02.html#7.2>,
> to at least get a sense of how that language dealt with these
> questions (25 years ago!)
>

Ada also has numerous other concepts (like packages for interfaces) that
C++ does not have. It's a useful starting point, but this is a conversation
that has been ongoing with C++ for *years*.

In short: this is territory that's already been well-covered.

--

---
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_103_569068979.1445461528694
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<br><br>On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wro=
te:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;=
border-left: 1px #ccc solid;padding-left: 1ex;">In Ada, these are called de=
rived types. =C2=A0It is instructive to read the
<br>Ada Rationale about them,
<br>&lt;<a href=3D"http://archive.adaic.com/standards/83rat/html/ratl-07-02=
..html#7.2" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#=
39;http://www.google.com/url?q\75http%3A%2F%2Farchive.adaic.com%2Fstandards=
%2F83rat%2Fhtml%2Fratl-07-02.html%237.2\46sa\75D\46sntz\0751\46usg\75AFQjCN=
ES57lf4WZMq91AShwvH0SFCRY1mQ&#39;;return true;" onclick=3D"this.href=3D&#39=
;http://www.google.com/url?q\75http%3A%2F%2Farchive.adaic.com%2Fstandards%2=
F83rat%2Fhtml%2Fratl-07-02.html%237.2\46sa\75D\46sntz\0751\46usg\75AFQjCNES=
57lf4WZMq91AShwvH0SFCRY1mQ&#39;;return true;">http://archive.adaic.com/<wbr=
>standards/83rat/html/ratl-07-<wbr>02.html#7.2</a>&gt;,
<br>to at least get a sense of how that language dealt with these
<br>questions (25 years ago!)<br></blockquote><div><br>Ada also has numerou=
s other concepts (like packages for interfaces) that C++ does not have. It&=
#39;s a useful starting point, but this is a conversation that has been ong=
oing with C++ for <i>years</i>.<br><br>In short: this is territory that&#39=
;s already been well-covered.</div>

<p></p>

-- <br />
<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 <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 />
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 />

------=_Part_103_569068979.1445461528694--
------=_Part_102_901271035.1445461528693--

.


Author: =?UTF-8?Q?Klaim_=2D_Jo=C3=ABl_Lamotte?= <mjklaim@gmail.com>
Date: Wed, 21 Oct 2015 23:57:25 +0200
Raw View
--001a11c3c5f2bf98640522a476b3
Content-Type: text/plain; charset=UTF-8

On 21 October 2015 at 14:04, dgutson . <danielgutson@gmail.com> wrote:

> While we are implementing a gcc extension for a "strong typedef" which
> basically copies a type as a brand new type (only for user-defined so far),
> I'd want to ask: what's the foundamental obstacle that prevents C++ to have
> a strong typedef besides the alias? Lack of consensus regarding what it
> means among people?
>
> Thanks,
>

See the motivation section of P0109r0 [1] for a summary of the prolems.
Basically, what does generating a new type from another one mean? Does this
new type is compatible with the original one?
Can it be passed to the functions taking the original type as arguments?
After a lot of discussions, it seems that depending on the case, you want
either compatible or not compatible types.
In the end, ideally you want to be able to chose exactly the semantic
of this new type, relative to it's original type. This is what P0109r0 is
proposing.

[1]  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0109r0.pdf

--

---
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/.

--001a11c3c5f2bf98640522a476b3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On 21 October 2015 at 14:04, dgutson . <span dir=3D"ltr">&lt;<a href=3D=
"mailto:danielgutson@gmail.com" target=3D"_blank">danielgutson@gmail.com</a=
>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);bo=
rder-left-style:solid;padding-left:1ex"><p dir=3D"ltr">While we are impleme=
nting a gcc extension for a &quot;strong typedef&quot; which basically copi=
es a type as a brand new type (only for user-defined so far), I&#39;d want =
to ask: what&#39;s the foundamental obstacle that prevents C++ to have a st=
rong typedef besides the alias? Lack of consensus regarding what it means a=
mong people?</p>
<p dir=3D"ltr">Thanks,<br></p></blockquote><div><br></div><div>See the moti=
vation section of P0109r0 [1] for a summary of the prolems.</div><div>Basic=
ally, what does generating a new type from another one mean? Does this new =
type is compatible with the original one?</div><div>Can it be passed to the=
 functions taking the original type as arguments?=C2=A0</div><div>After a l=
ot of discussions, it seems that depending on the case, you want either com=
patible or not compatible types.</div><div>In the end, ideally you want to =
be able to chose exactly the semantic</div><div>of this new type, relative =
to it&#39;s original type. This is what P0109r0 is proposing.</div><div><br=
></div><div>[1] =C2=A0<a href=3D"http://www.open-std.org/jtc1/sc22/wg21/doc=
s/papers/2015/p0109r0.pdf">http://www.open-std.org/jtc1/sc22/wg21/docs/pape=
rs/2015/p0109r0.pdf</a></div><div>=C2=A0</div></div></div></div>

<p></p>

-- <br />
<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 <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 />
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 />

--001a11c3c5f2bf98640522a476b3--

.


Author: "dgutson ." <danielgutson@gmail.com>
Date: Wed, 21 Oct 2015 19:11:30 -0300
Raw View
On Wed, Oct 21, 2015 at 6:05 PM, Nicol Bolas <jmckesson@gmail.com> wrote:
>
>
> On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wrote:
>>
>> In Ada, these are called derived types.  It is instructive to read the
>> Ada Rationale about them,
>> <http://archive.adaic.com/standards/83rat/html/ratl-07-02.html#7.2>,
>> to at least get a sense of how that language dealt with these
>> questions (25 years ago!)
>
>
> Ada also has numerous other concepts (like packages for interfaces) that =
C++
> does not have. It's a useful starting point, but this is a conversation t=
hat
> has been ongoing with C++ for years.
>
> In short: this is territory that's already been well-covered.

But yet not solved for C and C++.

OK, I read Walter's paper, I just read in the WG21 wiki the discussion
of that paper (that happened moments ago though I'm not in Kona)
including Bjarne's comments, and agree with Chandler's idea that this
could be done with reflection.
My initial implementation was "typecopy", which was not meant for
basic type; it just created a new type containing all the stuff
(attributes, methods) but renamed.
However I realize it wouldn't suffice, as Walter already told me.
There are a lot of issues such as:
  - non-member methods. I think they should not be part of the copied type.
  - nested types: For example, given a strong typedef of std::string,
what about std::string::iterator? (My short answer is: it's a strong
typedef named mystring::iterator)

However complexity is going far than what I need.

For the time being, I will experiment with a new attribute that will
enable a warning:
typedef int [[strong]] Meters;
typedef int [[strong]] Kilometers;

Meters m;
Kilometers k;

k =3D m; // warning;
int x =3D m; // warning
m =3D=3D k; // warning
m =3D 1; // warning
m =3D Meters(1); // OK
m + k; // warning
Meters* mp =3D &k; // warning
Meters& mr =3D k; // warning

typedef string [[strong]] Name;
string::iterator it =3D Name.begin(); // no warning :(

This will not enable overloading, but is a start and may prevent some mista=
kes.

From this point on, I will proceed with the attribute approach. Any
further idea about this?

>
> --
>
> ---
> 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/.



--=20
Who=E2=80=99s got the sweetest disposition?
One guess, that=E2=80=99s who?
Who=E2=80=99d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--=20

---=20
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 e=
mail 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-proposa=
ls/.

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Wed, 21 Oct 2015 17:41:46 -0700 (PDT)
Raw View
------=_Part_18_573999095.1445474506468
Content-Type: multipart/alternative;
 boundary="----=_Part_19_930533680.1445474506468"

------=_Part_19_930533680.1445474506468
Content-Type: text/plain; charset=UTF-8

On Wednesday, October 21, 2015 at 6:11:32 PM UTC-4, dgutson wrote:
>
> On Wed, Oct 21, 2015 at 6:05 PM, Nicol Bolas <jmck...@gmail.com
> <javascript:>> wrote:
> >
> >
> > On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wrote:
> >>
> >> In Ada, these are called derived types.  It is instructive to read the
> >> Ada Rationale about them,
> >> <http://archive.adaic.com/standards/83rat/html/ratl-07-02.html#7.2>,
> >> to at least get a sense of how that language dealt with these
> >> questions (25 years ago!)
> >
> >
> > Ada also has numerous other concepts (like packages for interfaces) that
> C++
> > does not have. It's a useful starting point, but this is a conversation
> that
> > has been ongoing with C++ for years.
> >
> > In short: this is territory that's already been well-covered.
>
> But yet not solved for C and C++.
>

My point was merely that "look at what Ada does" was a step we took a long
time ago.

OK, I read Walter's paper, I just read in the WG21 wiki the discussion
> of that paper


Where is this WG21 wiki that people keep talking about? Is it publicly
accessible?

--

---
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_19_930533680.1445474506468
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Wednesday, October 21, 2015 at 6:11:32 PM UTC-4, dgutson wrote:<blockquo=
te class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left:=
 1px #ccc solid;padding-left: 1ex;">On Wed, Oct 21, 2015 at 6:05 PM, Nicol =
Bolas &lt;<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=
=3D"Zspz-wnYEAAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascri=
pt:&#39;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return =
true;">jmck...@gmail.com</a>&gt; wrote:
<br>&gt;
<br>&gt;
<br>&gt; On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wr=
ote:
<br>&gt;&gt;
<br>&gt;&gt; In Ada, these are called derived types. =C2=A0It is instructiv=
e to read the
<br>&gt;&gt; Ada Rationale about them,
<br>&gt;&gt; &lt;<a href=3D"http://archive.adaic.com/standards/83rat/html/r=
atl-07-02.html#7.2" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.=
href=3D&#39;http://www.google.com/url?q\75http%3A%2F%2Farchive.adaic.com%2F=
standards%2F83rat%2Fhtml%2Fratl-07-02.html%237.2\46sa\75D\46sntz\0751\46usg=
\75AFQjCNES57lf4WZMq91AShwvH0SFCRY1mQ&#39;;return true;" onclick=3D"this.hr=
ef=3D&#39;http://www.google.com/url?q\75http%3A%2F%2Farchive.adaic.com%2Fst=
andards%2F83rat%2Fhtml%2Fratl-07-02.html%237.2\46sa\75D\46sntz\0751\46usg\7=
5AFQjCNES57lf4WZMq91AShwvH0SFCRY1mQ&#39;;return true;">http://archive.adaic=
..com/<wbr>standards/83rat/html/ratl-07-<wbr>02.html#7.2</a>&gt;,
<br>&gt;&gt; to at least get a sense of how that language dealt with these
<br>&gt;&gt; questions (25 years ago!)
<br>&gt;
<br>&gt;
<br>&gt; Ada also has numerous other concepts (like packages for interfaces=
) that C++
<br>&gt; does not have. It&#39;s a useful starting point, but this is a con=
versation that
<br>&gt; has been ongoing with C++ for years.
<br>&gt;
<br>&gt; In short: this is territory that&#39;s already been well-covered.
<br>
<br>But yet not solved for C and C++.<br></blockquote><div><br>My point was=
 merely that &quot;look at what Ada does&quot; was a step we took a long ti=
me ago.<br><br></div><blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
OK, I read Walter&#39;s paper, I just read in the WG21 wiki the discussion
<br>of that paper</blockquote><div><br>Where is this WG21 wiki that people =
keep talking about? Is it publicly accessible?</div><br>

<p></p>

-- <br />
<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 <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 />
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 />

------=_Part_19_930533680.1445474506468--
------=_Part_18_573999095.1445474506468--

.


Author: "dgutson ." <danielgutson@gmail.com>
Date: Wed, 21 Oct 2015 21:46:59 -0300
Raw View
--001a1140ffba31d5870522a6d5db
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

El 21/10/2015 21:41, "Nicol Bolas" <jmckesson@gmail.com> escribi=C3=B3:
>
> On Wednesday, October 21, 2015 at 6:11:32 PM UTC-4, dgutson wrote:
>>
>> On Wed, Oct 21, 2015 at 6:05 PM, Nicol Bolas <jmck...@gmail.com> wrote:
>> >
>> >
>> > On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Rosen wrote:
>> >>
>> >> In Ada, these are called derived types.  It is instructive to read
the
>> >> Ada Rationale about them,
>> >> <http://archive.adaic.com/standards/83rat/html/ratl-07-02.html#7.2>,
>> >> to at least get a sense of how that language dealt with these
>> >> questions (25 years ago!)
>> >
>> >
>> > Ada also has numerous other concepts (like packages for interfaces)
that C++
>> > does not have. It's a useful starting point, but this is a
conversation that
>> > has been ongoing with C++ for years.
>> >
>> > In short: this is territory that's already been well-covered.
>>
>> But yet not solved for C and C++.
>
>
> My point was merely that "look at what Ada does" was a step we took a
long time ago.
>
>> OK, I read Walter's paper, I just read in the WG21 wiki the discussion
>> of that paper
>
>
> Where is this WG21 wiki that people keep talking about? Is it publicly
accessible?

It is not, but please ask somebody else for access to it since I may not be
authorized to disclose the password. Maybe Daveed, or Daniel K., etc.

>
> --
>
> ---
> 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/.

--=20

---=20
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 e=
mail 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-proposa=
ls/.

--001a1140ffba31d5870522a6d5db
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<p dir=3D"ltr"><br>
El 21/10/2015 21:41, &quot;Nicol Bolas&quot; &lt;<a href=3D"mailto:jmckesso=
n@gmail.com">jmckesson@gmail.com</a>&gt; escribi=C3=B3:<br>
&gt;<br>
&gt; On Wednesday, October 21, 2015 at 6:11:32 PM UTC-4, dgutson wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Oct 21, 2015 at 6:05 PM, Nicol Bolas &lt;<a href=3D"mailto=
:jmck...@gmail.com">jmck...@gmail.com</a>&gt; wrote: <br>
&gt;&gt; &gt; <br>
&gt;&gt; &gt; <br>
&gt;&gt; &gt; On Wednesday, October 21, 2015 at 4:48:51 PM UTC-4, Hyman Ros=
en wrote: <br>
&gt;&gt; &gt;&gt; <br>
&gt;&gt; &gt;&gt; In Ada, these are called derived types.=C2=A0 It is instr=
uctive to read the <br>
&gt;&gt; &gt;&gt; Ada Rationale about them, <br>
&gt;&gt; &gt;&gt; &lt;<a href=3D"http://archive.adaic.com/standards/83rat/h=
tml/ratl-07-02.html#7.2">http://archive.adaic.com/standards/83rat/html/ratl=
-07-02.html#7.2</a>&gt;, <br>
&gt;&gt; &gt;&gt; to at least get a sense of how that language dealt with t=
hese <br>
&gt;&gt; &gt;&gt; questions (25 years ago!) <br>
&gt;&gt; &gt; <br>
&gt;&gt; &gt; <br>
&gt;&gt; &gt; Ada also has numerous other concepts (like packages for inter=
faces) that C++ <br>
&gt;&gt; &gt; does not have. It&#39;s a useful starting point, but this is =
a conversation that <br>
&gt;&gt; &gt; has been ongoing with C++ for years. <br>
&gt;&gt; &gt; <br>
&gt;&gt; &gt; In short: this is territory that&#39;s already been well-cove=
red. <br>
&gt;&gt;<br>
&gt;&gt; But yet not solved for C and C++.<br>
&gt;<br>
&gt;<br>
&gt; My point was merely that &quot;look at what Ada does&quot; was a step =
we took a long time ago.<br>
&gt;<br>
&gt;&gt; OK, I read Walter&#39;s paper, I just read in the WG21 wiki the di=
scussion <br>
&gt;&gt; of that paper<br>
&gt;<br>
&gt;<br>
&gt; Where is this WG21 wiki that people keep talking about? Is it publicly=
 accessible?</p>
<p dir=3D"ltr">It is not, but please ask somebody else for access to it sin=
ce I may not be authorized to disclose the password. Maybe Daveed, or Danie=
l K., etc.</p>
<p dir=3D"ltr">&gt;<br>
&gt; -- <br>
&gt;<br>
&gt; --- <br>
&gt; You received this message because you are subscribed to the Google Gro=
ups &quot;ISO C++ Standard - Future Proposals&quot; group.<br>
&gt; To unsubscribe from this group and stop receiving emails from it, send=
 an email to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org">std-=
proposals+unsubscribe@isocpp.org</a>.<br>
&gt; To post to this group, send email to <a href=3D"mailto:std-proposals@i=
socpp.org">std-proposals@isocpp.org</a>.<br>
&gt; Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/g=
roup/std-proposals/">http://groups.google.com/a/isocpp.org/group/std-propos=
als/</a>.<br>
</p>

<p></p>

-- <br />
<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 <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 />
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 />

--001a1140ffba31d5870522a6d5db--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Thu, 22 Oct 2015 04:00:46 +0300
Raw View
On 22 October 2015 at 03:46, dgutson . <danielgutson@gmail.com> wrote:
>> Where is this WG21 wiki that people keep talking about? Is it publicly
>> accessible?
> It is not, but please ask somebody else for access to it since I may not be
> authorized to disclose the password. Maybe Daveed, or Daniel K., etc.


The wiki is for committee members only.

--

---
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: Louis Dionne <ldionne.2@gmail.com>
Date: Thu, 22 Oct 2015 15:42:46 -0700 (PDT)
Raw View
------=_Part_1016_1639327126.1445553766592
Content-Type: multipart/alternative;
 boundary="----=_Part_1017_1274486757.1445553766592"

------=_Part_1017_1274486757.1445553766592
Content-Type: text/plain; charset=UTF-8



On Wednesday, 21 October 2015 21:00:49 UTC-4, Ville Voutilainen wrote:
>
> On 22 October 2015 at 03:46, dgutson . <daniel...@gmail.com <javascript:>>
> wrote:
> >> Where is this WG21 wiki that people keep talking about? Is it publicly
> >> accessible?
> > It is not, but please ask somebody else for access to it since I may not
> be
> > authorized to disclose the password. Maybe Daveed, or Daniel K., etc.
>
>
> The wiki is for committee members only.
>

So much for an "open" standard!

;-)

Louis

--

---
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_1017_1274486757.1445553766592
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Wednesday, 21 October 2015 21:00:49 UTC-4, Vill=
e Voutilainen  wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On 22 Oct=
ober 2015 at 03:46, dgutson . &lt;<a href=3D"javascript:" target=3D"_blank"=
 gdf-obfuscated-mailto=3D"wlA4_kbhEAAJ" rel=3D"nofollow" onmousedown=3D"thi=
s.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39;ja=
vascript:&#39;;return true;">daniel...@gmail.com</a>&gt; wrote:
<br>&gt;&gt; Where is this WG21 wiki that people keep talking about? Is it =
publicly
<br>&gt;&gt; accessible?
<br>&gt; It is not, but please ask somebody else for access to it since I m=
ay not be
<br>&gt; authorized to disclose the password. Maybe Daveed, or Daniel K., e=
tc.
<br>
<br>
<br>The wiki is for committee members only.
<br></blockquote><div><br></div><div>So much for an &quot;open&quot; standa=
rd!</div><div><br></div><div>;-)</div><div><br></div><div>Louis</div></div>

<p></p>

-- <br />
<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 <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 />
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 />

------=_Part_1017_1274486757.1445553766592--
------=_Part_1016_1639327126.1445553766592--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Fri, 23 Oct 2015 02:21:29 +0300
Raw View
On 23 October 2015 at 01:42, Louis Dionne <ldionne.2@gmail.com> wrote:
>> The wiki is for committee members only.
> So much for an "open" standard!
> ;-)


It's far more open than ISO standards usually are, but it's not a
free-for-all. :P

--

---
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: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Fri, 23 Oct 2015 01:38:21 +0200
Raw View
--047d7b6250e08e78820522b9fd95
Content-Type: text/plain; charset=UTF-8

On Fri, Oct 23, 2015 at 1:21 AM, Ville Voutilainen <
ville.voutilainen@gmail.com> wrote:

> On 23 October 2015 at 01:42, Louis Dionne <ldionne.2@gmail.com> wrote:
> >> The wiki is for committee members only.
> > So much for an "open" standard!
> > ;-)
>
> It's far more open than ISO standards usually are, but it's not a
> free-for-all. :P
>

If you want to learn more about getting involved with the committee I would
recommend watching "Grill the committee" from this years CPPCON:

  https://www.youtube.com/watch?v=PqU_ot4BlNQ

In general the next step after participating on this list is actually
turning up to a meeting and donating manpower.  The next one is in
Jacksonville at the end of Feb 2016.  See the following page:

  https://isocpp.org/std/meetings-and-participation/

--

---
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/.

--047d7b6250e08e78820522b9fd95
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On F=
ri, Oct 23, 2015 at 1:21 AM, Ville Voutilainen <span dir=3D"ltr">&lt;<a hre=
f=3D"mailto:ville.voutilainen@gmail.com" target=3D"_blank">ville.voutilaine=
n@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(2=
04,204,204);border-left-style:solid;padding-left:1ex"><span class=3D"">On 2=
3 October 2015 at 01:42, Louis Dionne &lt;<a href=3D"mailto:ldionne.2@gmail=
..com">ldionne.2@gmail.com</a>&gt; wrote:<br>
&gt;&gt; The wiki is for committee members only.<br>
&gt; So much for an &quot;open&quot; standard!<br>
&gt; ;-)<br><br>
</span>It&#39;s far more open than ISO standards usually are, but it&#39;s =
not a<br>
free-for-all. :P<br>
<div class=3D""><div class=3D"h5"></div></div></blockquote></div><br></div>=
<div class=3D"gmail_extra">If you want to learn more about getting involved=
 with the committee I would recommend watching &quot;Grill the committee&qu=
ot; from this years CPPCON:<br></div><div class=3D"gmail_extra"><br></div><=
div class=3D"gmail_extra">=C2=A0 <a href=3D"https://www.youtube.com/watch?v=
=3DPqU_ot4BlNQ">https://www.youtube.com/watch?v=3DPqU_ot4BlNQ</a><br></div>=
<div class=3D"gmail_extra"><br></div><div class=3D"gmail_extra">In general =
the next step after participating on this list is actually turning up to a =
meeting and donating manpower.=C2=A0 The next one is in Jacksonville at the=
 end of Feb 2016.=C2=A0 See the following page:</div><div class=3D"gmail_ex=
tra"><br></div><div class=3D"gmail_extra">=C2=A0=C2=A0<a href=3D"https://is=
ocpp.org/std/meetings-and-participation/">https://isocpp.org/std/meetings-a=
nd-participation/</a></div><div class=3D"gmail_extra"><br></div></div>

<p></p>

-- <br />
<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 <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 />
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 />

--047d7b6250e08e78820522b9fd95--

.