Topic: [proposal] Template & fixed operator new & delete


Author: Ryan Nicholl <r.p.nicholl@gmail.com>
Date: Mon, 7 Nov 2016 10:41:07 -0800 (PST)
Raw View
------=_Part_2336_1806015700.1478544067159
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I am here to propose a fixed operator new. Fixed allocation is more efficie=
nt, excluding OS overhead, O(1) alloc and O(1) free.

Part I: Template new

  template <std::size_t N, std::size_t Align>
  void * operator new();

  template <std::size_t N, std::size_t Align>
  void operator delete(void*p);

  // Other type based overloads

Note that these interfaces are *incompatible* with regular operator new and=
 delete. One allocated with new<N>() *must* be deallocated with delete<N>(p=
).

Pros: Much faster, can be used with algorithms that provide O(1) alloc and =
O(1) free (excluding OS overhead to allocate more values, or overhead to fi=
nd chunks to return to os), zero ram overhead (no header in the way, free l=
ist is stored inside free blocks.)


Cons: Size must be provided to delete as template parameter. Cannot allocat=
e array. Need to define before including headers.

Syntax examples:

  T* ptr =3D new<> T();
  void * ptr2 =3D new<8> ();

  delete<> ptr;
  delete<8> ptr2;

Part II: Fixed, non-template new

  void * operator new(std::size_t n, std::fixed_alloc_tag_t);
  void operator delete(void* p, std::fixed_alloc_tag_t, std::size_t n);

  //type based overloads

Same principle, but uses arguments instead of template parameters.

Sure to be asked question: How is this different from sized delete?
Answer: Sized delete must be compatible with regular delete. This is a huge=
 problem for headerless allocators that don't keep track of allocation size=
s and require that information to be provided on delete in order to work. H=
eaderless allocators are faster and more efficient.

Syntax example:

  T* p =3D new (std::alloc_fixed) T(...);
  void * p2 =3D new (std::alloc_fixed, 32);

  delete (std::alloc_fixed) p;
  delete (std::alloc_fixed, 32) p2;

Pros: Same as above, but does not require a template.
Cons: Extra branching/jumps looking up sized allocator/deallocator.

Comments?

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/a72d38c1-f426-434a-8fc1-ec8dc9772c7f%40isocpp.or=
g.

------=_Part_2336_1806015700.1478544067159--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Mon, 7 Nov 2016 11:09:13 -0800 (PST)
Raw View
------=_Part_2393_1611062697.1478545753567
Content-Type: multipart/alternative;
 boundary="----=_Part_2394_1684437630.1478545753567"

------=_Part_2394_1684437630.1478545753567
Content-Type: text/plain; charset=UTF-8

On Monday, November 7, 2016 at 1:41:07 PM UTC-5, Ryan Nicholl wrote:
>
> Sure to be asked question: How is this different from sized delete?
> Answer: Sized delete must be compatible with regular delete. This is a
> huge problem for headerless allocators that don't keep track of allocation
> sizes and require that information to be provided on delete in order to
> work. Headerless allocators are faster and more efficient.
>

Wouldn't it be much easier to simply declare that allocations with the
sized `new` have to be deleted with the corresponding sized `delete`? If
that's the only difference, then just fix that part of the spec. No need to
add *yet another* set of allocation functions.

--
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/91ddf2f7-5eb2-4588-bd78-cbc6d010b30a%40isocpp.org.

------=_Part_2394_1684437630.1478545753567
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Monday, November 7, 2016 at 1:41:07 PM UTC-5, Ryan Nich=
oll wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:=
 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><p>Sure to be asked =
question: How is this different from sized delete?<br>Answer: Sized delete =
must be compatible with regular delete. This is a huge problem for headerle=
ss allocators that don&#39;t keep track of allocation sizes and require tha=
t information to be provided on delete in order to work. Headerless allocat=
ors are faster and more efficient.</p></blockquote><div><br>Wouldn&#39;t it=
 be much easier to simply declare that allocations with the sized `new` hav=
e to be deleted with the corresponding sized `delete`? If that&#39;s the on=
ly difference, then just fix that part of the spec. No need to add <i>yet a=
nother</i> set of allocation functions.<br></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/91ddf2f7-5eb2-4588-bd78-cbc6d010b30a%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/91ddf2f7-5eb2-4588-bd78-cbc6d010b30a=
%40isocpp.org</a>.<br />

------=_Part_2394_1684437630.1478545753567--

------=_Part_2393_1611062697.1478545753567--

.


Author: Ryan Nicholl <r.p.nicholl@gmail.com>
Date: Mon, 7 Nov 2016 15:54:18 -0800 (PST)
Raw View
------=_Part_2488_2063197532.1478562859045
Content-Type: text/plain; charset=UTF-8

Well, my rationale is that making sized delete incompatible with existing delete would break existing code, to avoid that I thought an extension to operator new/delete would be best...

--
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/e081ffe4-8256-4198-a8d4-52841a47f420%40isocpp.org.

------=_Part_2488_2063197532.1478562859045--

.


Author: Bengt Gustafsson <bengt.gustafsson@beamways.com>
Date: Wed, 9 Nov 2016 00:44:48 -0800 (PST)
Raw View
------=_Part_151_1295256129.1478681088992
Content-Type: multipart/alternative;
 boundary="----=_Part_152_1184934250.1478681088992"

------=_Part_152_1184934250.1478681088992
Content-Type: text/plain; charset=UTF-8

According to cppreference.com
(http://en.cppreference.com/w/cpp/language/delete) there is no form of
delete with a size expression, I'm pretty sure there was in the beginning
and I haven't checked the actual standard so it may still actually be
allowed, and even if not part of the standard it could be allowed by
compilers for (really long) backwards compatibility [MSVC allows it, I
tried]. However, I don't think this necessarily causes any real
compatibility issues. What's needed is a possibility to get the size into
the customized operator delete[] by allowing to overload it, for instance
denoted (when declared) as "operator delete[size_t](-- pars --). This
operator version is called when the `delete[cnt] ptr` form is compiled. Its
default implementation calls the regular operator delete[] but it can be
overloaded as usual.

So regarding backwards compatibility any current use of `delete[cnt] ptr`
would use this default implementation and work as today. The remaining
issue would be if you would want to change the default heap to be non-size
aware in a pre-existing code base where some delete invokations happen to
have a size for legacy reasons. In this case those would be the *only*
array deletes that works and a major code walkthrough to find all the other
instances of array delete would be necessary.

Note however that the current Allocator concept does receive the byte size
of the block to its deallocate() so for containers this problem can be
solved by a special allocator, and a container which is templated on the
element count while storing the actual elements using an Allocator can
easily be implemented. This seems very close to what the OP is looking for.
This reduces the need for a new feature dramatically, I would say.

--
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/b2c42c6b-e597-4d6c-b4fa-4083c86292c7%40isocpp.org.

------=_Part_152_1184934250.1478681088992
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>According to cppreference.com (http://en.cppreference=
..com/w/cpp/language/delete) there is no form of delete with a size expressi=
on, I&#39;m pretty sure there was in the beginning and I haven&#39;t checke=
d the actual standard so it may still actually be allowed, and even if not =
part of the standard it could be allowed by compilers for (really long) bac=
kwards compatibility [MSVC allows it, I tried]. However, I don&#39;t think =
this necessarily causes any real compatibility issues. What&#39;s needed is=
 a possibility to get the size into the customized operator delete[] by all=
owing to overload it, for instance denoted (when declared) as &quot;operato=
r delete[size_t](-- pars --). This operator version is called when the `del=
ete[cnt] ptr` form is compiled. Its default implementation calls the regula=
r operator delete[] but it can be overloaded as usual.</div><div><br></div>=
<div>So regarding backwards compatibility any current use of `delete[cnt] p=
tr` would use this default implementation and work as today. The remaining =
issue would be if you would want to change the default heap to be non-size =
aware in a pre-existing code base where some delete invokations happen to h=
ave a size for legacy reasons. In this case those would be the *only* array=
 deletes that works and a major code walkthrough to find all the other inst=
ances of array delete would be necessary.</div><div><br></div><div>Note how=
ever that the current Allocator concept does receive the byte size of the b=
lock to its deallocate() so for containers this problem can be solved by a =
special allocator, and a container which is templated on the element count =
while storing the actual elements using an Allocator can easily be implemen=
ted. This seems very close to what the OP is looking for. This reduces the =
need for a new feature dramatically, I would say.<br></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b2c42c6b-e597-4d6c-b4fa-4083c86292c7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b2c42c6b-e597-4d6c-b4fa-4083c86292c7=
%40isocpp.org</a>.<br />

------=_Part_152_1184934250.1478681088992--

------=_Part_151_1295256129.1478681088992--

.


Author: "T. C." <rs2740@gmail.com>
Date: Wed, 9 Nov 2016 02:21:26 -0800 (PST)
Raw View
------=_Part_3043_1482912275.1478686886115
Content-Type: multipart/alternative;
 boundary="----=_Part_3044_335749790.1478686886115"

------=_Part_3044_335749790.1478686886115
Content-Type: text/plain; charset=UTF-8

::operator delete has a sized version, but the delete expression has never
had a placement form: `delete (...) p ` has always been invalid. The only
valid forms are `delete p` and `delete [] p`, optionally beginning with a
`::`.

Placement deallocation functions are only used by a corresponding placement
new-expression when the constructor throws.

--
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/139c8239-29fb-43ed-ac64-9c20d19b8442%40isocpp.org.

------=_Part_3044_335749790.1478686886115
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">::operator delete has a sized version, but the delete expr=
ession has never had a placement form: `delete (...) p ` has always been in=
valid. The only valid forms are `delete p` and `delete [] p`, optionally be=
ginning with a `::`.<div><br></div><div>Placement deallocation functions ar=
e only used by a corresponding placement new-expression when the constructo=
r throws.<br><div><br></div></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/139c8239-29fb-43ed-ac64-9c20d19b8442%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/139c8239-29fb-43ed-ac64-9c20d19b8442=
%40isocpp.org</a>.<br />

------=_Part_3044_335749790.1478686886115--

------=_Part_3043_1482912275.1478686886115--

.


Author: Ryan Nicholl <r.p.nicholl@gmail.com>
Date: Sun, 20 Aug 2017 13:06:59 -0700 (PDT)
Raw View
------=_Part_5871_730552581.1503259619110
Content-Type: multipart/alternative;
 boundary="----=_Part_5872_2003272485.1503259619111"

------=_Part_5872_2003272485.1503259619111
Content-Type: text/plain; charset="UTF-8"

If you use
auto ptr = new T[5];
Then you can call:
delete[] ptr;
This breaks static-size allocators or at least requires them to use some
kind of expensive lookup method. I don't like breaking old code, so I think
a new parameter is better.

I think e.g.
new<16>()

would be the best way to do this, which would return a void* to a 16-byte
chunk (minimum).

Likewise
delete<16>(ptr);
would delete a 16-byte chunk.

If you need to allocate a certain class, you could do:
new<> T(...);
which would call "static-sized new" which must be deleted in the form:
delete<> t_ptr;


If you need a static-size array, that is supported like the allocation of
the void*, only instead of uninitialized data you get an array of T:
int *iptr = new<5> int;
So it can be deleted in the form:
delete<5> iptr;
Which deletes the array of 5 ints using the default static-size allocator,
unless overloaded for int.

If you wanted to aOn Wednesday, November 9, 2016 at 3:44:49 AM UTC-5, Bengt
Gustafsson wrote:
>
> According to cppreference.com (
> http://en.cppreference.com/w/cpp/language/delete) there is no form of
> delete with a size expression, I'm pretty sure there was in the beginning
> and I haven't checked the actual standard so it may still actually be
> allowed, and even if not part of the standard it could be allowed by
> compilers for (really long) backwards compatibility [MSVC allows it, I
> tried]. However, I don't think this necessarily causes any real
> compatibility issues. What's needed is a possibility to get the size into
> the customized operator delete[] by allowing to overload it, for instance
> denoted (when declared) as "operator delete[size_t](-- pars --). This
> operator version is called when the `delete[cnt] ptr` form is compiled. Its
> default implementation calls the regular operator delete[] but it can be
> overloaded as usual.
>
> So regarding backwards compatibility any current use of `delete[cnt] ptr`
> would use this default implementation and work as today. The remaining
> issue would be if you would want to change the default heap to be non-size
> aware in a pre-existing code base where some delete invokations happen to
> have a size for legacy reasons. In this case those would be the *only*
> array deletes that works and a major code walkthrough to find all the other
> instances of array delete would be necessary.
>
> Note however that the current Allocator concept does receive the byte size
> of the block to its deallocate() so for containers this problem can be
> solved by a special allocator, and a container which is templated on the
> element count while storing the actual elements using an Allocator can
> easily be implemented. This seems very close to what the OP is looking for.
> This reduces the need for a new feature dramatically, I would say.
>

--
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/7d1e7368-bfdf-4ddf-8506-6da32c79cbd5%40isocpp.org.

------=_Part_5872_2003272485.1503259619111
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">If you use <br><div style=3D"background-color: rgb(250, 25=
0, 250); border-color: rgb(187, 187, 187); border-style: solid; border-widt=
h: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"pr=
ettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">auto</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> ptr </span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">new=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">[</span><span styl=
e=3D"color: #066;" class=3D"styled-by-prettify">5</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">];</span></div></code></div>Then you=
 can call: <div style=3D"background-color: rgb(250, 250, 250); border-color=
: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap=
: break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">delete</span><span style=3D"color: #660;" class=3D"styled-by-prettify">[=
]</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> ptr</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span></div><=
/code></div>This breaks static-size allocators or at least requires
 them to use some kind of expensive lookup method. I don&#39;t like breakin=
g old code, so I think a new parameter is better.<br><br>I think e.g. <div =
style=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, =
187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" c=
lass=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettypri=
nt"><span style=3D"color: #008;" class=3D"styled-by-prettify">new</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><span sty=
le=3D"color: #066;" class=3D"styled-by-prettify">16</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&gt;()</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify"> </span></div></code></div><br>would b=
e the best way to do this, which would return a void* to a 16-byte chunk (m=
inimum).<br><br>Likewise <div style=3D"background-color: rgb(250, 250, 250)=
; border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px;=
 overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettypri=
nt"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"sty=
led-by-prettify">delete</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">&lt;</span><span style=3D"color: #066;" class=3D"styled-by-pre=
ttify">16</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&=
gt;(</span><span style=3D"color: #000;" class=3D"styled-by-prettify">ptr</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">);</span></di=
v></code></div>would delete a 16-byte chunk.<br><br>If you need to allocate=
 a certain class, you could do:<br><div style=3D"background-color: rgb(250,=
 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-w=
idth: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D=
"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;" cl=
ass=3D"styled-by-prettify">new</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">&lt;&gt;</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> T</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">(...);</span></div></code></div> which would call &quot;static-si=
zed new&quot; which must be deleted in the form:<br><div style=3D"backgroun=
d-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style=
: solid; border-width: 1px; overflow-wrap: break-word;" class=3D"prettyprin=
t"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D=
"color: #008;" class=3D"styled-by-prettify">delete</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">&lt;&gt;</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> t_ptr</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">;</span></div></code></div><br><br>If you=
 need a static-size array, that is supported like the allocation of the voi=
d*, only instead of uninitialized data you get an array of T:<br><div style=
=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187);=
 border-style: solid; border-width: 1px; overflow-wrap: break-word;" class=
=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<span style=3D"color: #008;" class=3D"styled-by-prettify">int</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">*</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify">iptr </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">new</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">&lt;</span><span style=3D"color: #066;" class=3D"styled-by-prettify">5=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span=
><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span st=
yle=3D"color: #008;" class=3D"styled-by-prettify">int</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"><br></span></div></code></div>So it can b=
e deleted in the form:<br><div style=3D"background-color: rgb(250, 250, 250=
); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px=
; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettypr=
int"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">delete</span><span style=3D"color: #660;" class=3D"styled=
-by-prettify">&lt;</span><span style=3D"color: #066;" class=3D"styled-by-pr=
ettify">5</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&=
gt;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> iptr</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><br></span></div></co=
de></div>Which deletes the array of 5 ints using the default static-size al=
locator, unless overloaded for int.<br><br>If you wanted to a<code class=3D=
"prettyprint"></code>On Wednesday, November 9, 2016 at 3:44:49 AM UTC-5, Be=
ngt Gustafsson wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=
=3D"ltr"><div>According to <a href=3D"http://cppreference.com" target=3D"_b=
lank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;http://www.google.co=
m/url?q\x3dhttp%3A%2F%2Fcppreference.com\x26sa\x3dD\x26sntz\x3d1\x26usg\x3d=
AFQjCNFfMEVsriPdiSLWG49XWK9zX_c5Ug&#39;;return true;" onclick=3D"this.href=
=3D&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fcppreference.com\x26sa\=
x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFfMEVsriPdiSLWG49XWK9zX_c5Ug&#39;;return =
true;">cppreference.com</a> (<a href=3D"http://en.cppreference.com/w/cpp/la=
nguage/delete" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=
=3D&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fen.cppreference.com%2Fw=
%2Fcpp%2Flanguage%2Fdelete\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNG5m1uWV9=
bqK19J5qI4q7dOGtCXzg&#39;;return true;" onclick=3D"this.href=3D&#39;http://=
www.google.com/url?q\x3dhttp%3A%2F%2Fen.cppreference.com%2Fw%2Fcpp%2Flangua=
ge%2Fdelete\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNG5m1uWV9bqK19J5qI4q7dOG=
tCXzg&#39;;return true;">http://en.cppreference.com/w/<wbr>cpp/language/del=
ete</a>) there is no form of delete with a size expression, I&#39;m pretty =
sure there was in the beginning and I haven&#39;t checked the actual standa=
rd so it may still actually be allowed, and even if not part of the standar=
d it could be allowed by compilers for (really long) backwards compatibilit=
y [MSVC allows it, I tried]. However, I don&#39;t think this necessarily ca=
uses any real compatibility issues. What&#39;s needed is a possibility to g=
et the size into the customized operator delete[] by allowing to overload i=
t, for instance denoted (when declared) as &quot;operator delete[size_t](--=
 pars --). This operator version is called when the `delete[cnt] ptr` form =
is compiled. Its default implementation calls the regular operator delete[]=
 but it can be overloaded as usual.</div><div><br></div><div>So regarding b=
ackwards compatibility any current use of `delete[cnt] ptr` would use this =
default implementation and work as today. The remaining issue would be if y=
ou would want to change the default heap to be non-size aware in a pre-exis=
ting code base where some delete invokations happen to have a size for lega=
cy reasons. In this case those would be the *only* array deletes that works=
 and a major code walkthrough to find all the other instances of array dele=
te would be necessary.</div><div><br></div><div>Note however that the curre=
nt Allocator concept does receive the byte size of the block to its dealloc=
ate() so for containers this problem can be solved by a special allocator, =
and a container which is templated on the element count while storing the a=
ctual elements using an Allocator can easily be implemented. This seems ver=
y close to what the OP is looking for. This reduces the need for a new feat=
ure dramatically, I would say.<br></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&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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/7d1e7368-bfdf-4ddf-8506-6da32c79cbd5%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7d1e7368-bfdf-4ddf-8506-6da32c79cbd5=
%40isocpp.org</a>.<br />

------=_Part_5872_2003272485.1503259619111--

------=_Part_5871_730552581.1503259619110--

.


Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Wed, 23 Aug 2017 18:35:49 -0400
Raw View
--Apple-Mail=_A3E98838-EC1D-4032-A024-65FC46126103
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

> On Aug 20, 2017, at 6:18 PM, std-proposals@isocpp.org wrote:
>=20
> If you use=20
> auto ptr =3D new T[5];
> Then you can call:=20
> delete[] ptr;
> This breaks static-size allocators or at least requires them to use some=
=20
> kind of expensive lookup method. I don't like breaking old code, so I thi=
nk=20
> a new parameter is better.
> =20
> I think e.g.=20
> new<16>()=20
> =20
> would be the best way to do this, which would return a void* to a 16-byte=
=20
> chunk (minimum).
> =20
> Likewise=20
> delete<16>(ptr);
> would delete a 16-byte chunk.
> =20
> If you need to allocate a certain class, you could do:
> new<> T(...);
> which would call "static-sized new" which must be deleted in the form:
> delete<> t_ptr;
> =20
> =20
> If you need a static-size array, that is supported like the allocation of=
=20
> the void*, only instead of uninitialized data you get an array of T:
> int *iptr =3D new<5> int;
> So it can be deleted in the form:
> delete<5> iptr;
> Which deletes the array of 5 ints using the default static-size allocator=
,=20
> unless overloaded for int.
> =20
> If you wanted to aOn Wednesday, November 9, 2016 at 3:44:49 AM UTC-5, Ben=
gt=20
> Gustafsson wrote:

     I=E2=80=99ve wondered why this hasn=E2=80=99t already been considered =
for being made more consistent with the rest of the language before, too, b=
ut I honestly don=E2=80=99t know whether the committee would even bother to=
 consider this change or not since its such a trivial one.  Come to think o=
f it, placement and `noexcept` `new` are kind of quirky as well, but I also=
 doubt whether chasing `new` to use normal function and functions template =
syntax for those specifiers would be worth the trouble, either. =20

Mentally shrugging,=20
     Bryce Glover
     RandomDSdevel@gmail.com

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/C1F5AD52-E8E3-4DDC-BAAC-AA6493C01FE3%40gmail.com=
..

--Apple-Mail=_A3E98838-EC1D-4032-A024-65FC46126103
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div><blockquote t=
ype=3D"cite" class=3D""><div class=3D"">On Aug 20, 2017, at 6:18 PM, <a hre=
f=3D"mailto:std-proposals@isocpp.org" class=3D"">std-proposals@isocpp.org</=
a> wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><spa=
n style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; =
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-=
spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-t=
ransform: none; white-space: normal; widows: auto; word-spacing: 0px; -webk=
it-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: non=
e; display: inline !important;" class=3D"">If you use<span class=3D"Apple-c=
onverted-space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46); fo=
nt-family: arial; font-style: normal; font-variant-caps: normal; font-weigh=
t: normal; letter-spacing: normal; orphans: auto; text-align: start; text-i=
ndent: 0px; text-transform: none; white-space: normal; widows: auto; word-s=
pacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255=
, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: ari=
al; font-size: inherit; font-style: normal; font-variant-caps: normal; font=
-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; widows: auto; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25=
5, 255, 255); float: none; display: inline !important;" class=3D"">auto ptr=
 =3D new T[5];</span><br style=3D"color: rgb(46, 46, 46); font-family: aria=
l; font-style: normal; font-variant-caps: normal; font-weight: normal; lett=
er-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; tex=
t-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -w=
ebkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=
=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size:=
 inherit; font-style: normal; font-variant-caps: normal; font-weight: norma=
l; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); =
float: none; display: inline !important;" class=3D"">Then you can call:<spa=
n class=3D"Apple-converted-space">&nbsp;</span></span><br style=3D"color: r=
gb(46, 46, 46); font-family: arial; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-al=
ign: start; text-indent: 0px; text-transform: none; white-space: normal; wi=
dows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-c=
olor: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46)=
; font-family: arial; font-size: inherit; font-style: normal; font-variant-=
caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backgr=
ound-color: rgb(255, 255, 255); float: none; display: inline !important;" c=
lass=3D"">delete[] ptr;</span><br style=3D"color: rgb(46, 46, 46); font-fam=
ily: arial; font-style: normal; font-variant-caps: normal; font-weight: nor=
mal; letter-spacing: normal; orphans: auto; text-align: start; text-indent:=
 0px; text-transform: none; white-space: normal; widows: auto; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255)=
;" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; fo=
nt-size: inherit; font-style: normal; font-variant-caps: normal; font-weigh=
t: normal; letter-spacing: normal; orphans: auto; text-align: start; text-i=
ndent: 0px; text-transform: none; white-space: normal; widows: auto; word-s=
pacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255=
, 255); float: none; display: inline !important;" class=3D"">This breaks st=
atic-size allocators or at least requires them to use some<span class=3D"Ap=
ple-converted-space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46=
); font-family: arial; font-style: normal; font-variant-caps: normal; font-=
weight: normal; letter-spacing: normal; orphans: auto; text-align: start; t=
ext-indent: 0px; text-transform: none; white-space: normal; widows: auto; w=
ord-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255=
, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family=
: arial; font-size: inherit; font-style: normal; font-variant-caps: normal;=
 font-weight: normal; letter-spacing: normal; orphans: auto; text-align: st=
art; text-indent: 0px; text-transform: none; white-space: normal; widows: a=
uto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: r=
gb(255, 255, 255); float: none; display: inline !important;" class=3D"">kin=
d of expensive lookup method. I don't like breaking old code, so I think<sp=
an class=3D"Apple-converted-space">&nbsp;</span></span><br style=3D"color: =
rgb(46, 46, 46); font-family: arial; font-style: normal; font-variant-caps:=
 normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-a=
lign: start; text-indent: 0px; text-transform: none; white-space: normal; w=
idows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-=
color: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46=
); font-family: arial; font-size: inherit; font-style: normal; font-variant=
-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: nor=
mal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backg=
round-color: rgb(255, 255, 255); float: none; display: inline !important;" =
class=3D"">a new parameter is better.</span><br style=3D"color: rgb(46, 46,=
 46); font-family: arial; font-style: normal; font-variant-caps: normal; fo=
nt-weight: normal; letter-spacing: normal; orphans: auto; text-align: start=
; text-indent: 0px; text-transform: none; white-space: normal; widows: auto=
; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(=
255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-fam=
ily: arial; font-size: inherit; font-style: normal; font-variant-caps: norm=
al; font-weight: normal; letter-spacing: normal; orphans: auto; text-align:=
 start; text-indent: 0px; text-transform: none; white-space: normal; widows=
: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color=
: rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">=
&nbsp;</span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-=
style: normal; font-variant-caps: normal; font-weight: normal; letter-spaci=
ng: normal; orphans: auto; text-align: start; text-indent: 0px; text-transf=
orm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-te=
xt-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><sp=
an style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit;=
 font-style: normal; font-variant-caps: normal; font-weight: normal; letter=
-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-=
transform: none; white-space: normal; widows: auto; word-spacing: 0px; -web=
kit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: no=
ne; display: inline !important;" class=3D"">I think e.g.<span class=3D"Appl=
e-converted-space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46);=
 font-family: arial; font-style: normal; font-variant-caps: normal; font-we=
ight: normal; letter-spacing: normal; orphans: auto; text-align: start; tex=
t-indent: 0px; text-transform: none; white-space: normal; widows: auto; wor=
d-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, =
255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: =
arial; font-size: inherit; font-style: normal; font-variant-caps: normal; f=
ont-weight: normal; letter-spacing: normal; orphans: auto; text-align: star=
t; text-indent: 0px; text-transform: none; white-space: normal; widows: aut=
o; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb=
(255, 255, 255); float: none; display: inline !important;" class=3D"">new&l=
t;16&gt;()<span class=3D"Apple-converted-space">&nbsp;</span></span><br sty=
le=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal; font-=
variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans:=
 auto; text-align: start; text-indent: 0px; text-transform: none; white-spa=
ce: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px=
; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: r=
gb(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal;=
 font-variant-caps: normal; font-weight: normal; letter-spacing: normal; or=
phans: auto; text-align: start; text-indent: 0px; text-transform: none; whi=
te-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-widt=
h: 0px; background-color: rgb(255, 255, 255); float: none; display: inline =
!important;" class=3D"">&nbsp;</span><br style=3D"color: rgb(46, 46, 46); f=
ont-family: arial; font-style: normal; font-variant-caps: normal; font-weig=
ht: normal; letter-spacing: normal; orphans: auto; text-align: start; text-=
indent: 0px; text-transform: none; white-space: normal; widows: auto; word-=
spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 25=
5, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: ar=
ial; font-size: inherit; font-style: normal; font-variant-caps: normal; fon=
t-weight: normal; letter-spacing: normal; orphans: auto; text-align: start;=
 text-indent: 0px; text-transform: none; white-space: normal; widows: auto;=
 word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(2=
55, 255, 255); float: none; display: inline !important;" class=3D"">would b=
e the best way to do this, which would return a void* to a 16-byte<span cla=
ss=3D"Apple-converted-space">&nbsp;</span></span><br style=3D"color: rgb(46=
, 46, 46); font-family: arial; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); fon=
t-family: arial; font-size: inherit; font-style: normal; font-variant-caps:=
 normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-a=
lign: start; text-indent: 0px; text-transform: none; white-space: normal; w=
idows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-=
color: rgb(255, 255, 255); float: none; display: inline !important;" class=
=3D"">chunk (minimum).</span><br style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-style: normal; font-variant-caps: normal; font-weight: norm=
al; letter-spacing: normal; orphans: auto; text-align: start; text-indent: =
0px; text-transform: none; white-space: normal; widows: auto; word-spacing:=
 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);=
" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; fon=
t-size: inherit; font-style: normal; font-variant-caps: normal; font-weight=
: normal; letter-spacing: normal; orphans: auto; text-align: start; text-in=
dent: 0px; text-transform: none; white-space: normal; widows: auto; word-sp=
acing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,=
 255); float: none; display: inline !important;" class=3D"">&nbsp;</span><b=
r style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orp=
hans: auto; text-align: start; text-indent: 0px; text-transform: none; whit=
e-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width=
: 0px; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"col=
or: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: no=
rmal; font-variant-caps: normal; font-weight: normal; letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; background-color: rgb(255, 255, 255); float: none; display: in=
line !important;" class=3D"">Likewise<span class=3D"Apple-converted-space">=
&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46); font-family: arial=
; font-style: normal; font-variant-caps: normal; font-weight: normal; lette=
r-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text=
-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -we=
bkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=
=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size:=
 inherit; font-style: normal; font-variant-caps: normal; font-weight: norma=
l; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); =
float: none; display: inline !important;" class=3D"">delete&lt;16&gt;(ptr);=
</span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-style:=
 normal; font-variant-caps: normal; font-weight: normal; letter-spacing: no=
rmal; orphans: auto; text-align: start; text-indent: 0px; text-transform: n=
one; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-str=
oke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><span sty=
le=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-=
style: normal; font-variant-caps: normal; font-weight: normal; letter-spaci=
ng: normal; orphans: auto; text-align: start; text-indent: 0px; text-transf=
orm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-te=
xt-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; di=
splay: inline !important;" class=3D"">would delete a 16-byte chunk.</span><=
br style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal;=
 font-variant-caps: normal; font-weight: normal; letter-spacing: normal; or=
phans: auto; text-align: start; text-indent: 0px; text-transform: none; whi=
te-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-widt=
h: 0px; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"co=
lor: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: n=
ormal; font-variant-caps: normal; font-weight: normal; letter-spacing: norm=
al; orphans: auto; text-align: start; text-indent: 0px; text-transform: non=
e; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-strok=
e-width: 0px; background-color: rgb(255, 255, 255); float: none; display: i=
nline !important;" class=3D"">&nbsp;</span><br style=3D"color: rgb(46, 46, =
46); font-family: arial; font-style: normal; font-variant-caps: normal; fon=
t-weight: normal; letter-spacing: normal; orphans: auto; text-align: start;=
 text-indent: 0px; text-transform: none; white-space: normal; widows: auto;=
 word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(2=
55, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-size: inherit; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">I=
f you need to allocate a certain class, you could do:</span><br style=3D"co=
lor: rgb(46, 46, 46); font-family: arial; font-style: normal; font-variant-=
caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backgr=
ound-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 4=
6, 46); font-family: arial; font-size: inherit; font-style: normal; font-va=
riant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: a=
uto; text-align: start; text-indent: 0px; text-transform: none; white-space=
: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
background-color: rgb(255, 255, 255); float: none; display: inline !importa=
nt;" class=3D"">new&lt;&gt; T(...);</span><br style=3D"color: rgb(46, 46, 4=
6); font-family: arial; font-style: normal; font-variant-caps: normal; font=
-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; widows: auto; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(25=
5, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-famil=
y: arial; font-size: inherit; font-style: normal; font-variant-caps: normal=
; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: s=
tart; text-indent: 0px; text-transform: none; white-space: normal; widows: =
auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: =
rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">wh=
ich would call "static-sized new" which must be deleted in the form:</span>=
<br style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal=
; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; o=
rphans: auto; text-align: start; text-indent: 0px; text-transform: none; wh=
ite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"c=
olor: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: nor=
mal; orphans: auto; text-align: start; text-indent: 0px; text-transform: no=
ne; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stro=
ke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: =
inline !important;" class=3D"">delete&lt;&gt; t_ptr;</span><br style=3D"col=
or: rgb(46, 46, 46); font-family: arial; font-style: normal; font-variant-c=
aps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; te=
xt-align: start; text-indent: 0px; text-transform: none; white-space: norma=
l; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backgro=
und-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46=
, 46); font-family: arial; font-size: inherit; font-style: normal; font-var=
iant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: au=
to; text-align: start; text-indent: 0px; text-transform: none; white-space:=
 normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; b=
ackground-color: rgb(255, 255, 255); float: none; display: inline !importan=
t;" class=3D"">&nbsp;</span><br style=3D"color: rgb(46, 46, 46); font-famil=
y: arial; font-style: normal; font-variant-caps: normal; font-weight: norma=
l; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"=
 class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; font=
-size: inherit; font-style: normal; font-variant-caps: normal; font-weight:=
 normal; letter-spacing: normal; orphans: auto; text-align: start; text-ind=
ent: 0px; text-transform: none; white-space: normal; widows: auto; word-spa=
cing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, =
255); float: none; display: inline !important;" class=3D"">&nbsp;</span><br=
 style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal; f=
ont-variant-caps: normal; font-weight: normal; letter-spacing: normal; orph=
ans: auto; text-align: start; text-indent: 0px; text-transform: none; white=
-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width:=
 0px; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"colo=
r: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: nor=
mal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal=
; orphans: auto; text-align: start; text-indent: 0px; text-transform: none;=
 white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-=
width: 0px; background-color: rgb(255, 255, 255); float: none; display: inl=
ine !important;" class=3D"">If you need a static-size array, that is suppor=
ted like the allocation of<span class=3D"Apple-converted-space">&nbsp;</spa=
n></span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-styl=
e: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; orphans: auto; text-align: start; text-indent: 0px; text-transform:=
 none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-s=
troke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><span s=
tyle=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; fon=
t-style: normal; font-variant-caps: normal; font-weight: normal; letter-spa=
cing: normal; orphans: auto; text-align: start; text-indent: 0px; text-tran=
sform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-=
text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; =
display: inline !important;" class=3D"">the void*, only instead of uninitia=
lized data you get an array of T:</span><br style=3D"color: rgb(46, 46, 46)=
; font-family: arial; font-style: normal; font-variant-caps: normal; font-w=
eight: normal; letter-spacing: normal; orphans: auto; text-align: start; te=
xt-indent: 0px; text-transform: none; white-space: normal; widows: auto; wo=
rd-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255,=
 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family:=
 arial; font-size: inherit; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: sta=
rt; text-indent: 0px; text-transform: none; white-space: normal; widows: au=
to; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rg=
b(255, 255, 255); float: none; display: inline !important;" class=3D"">int =
*iptr =3D new&lt;5&gt; int;</span><br style=3D"color: rgb(46, 46, 46); font=
-family: arial; font-style: normal; font-variant-caps: normal; font-weight:=
 normal; letter-spacing: normal; orphans: auto; text-align: start; text-ind=
ent: 0px; text-transform: none; white-space: normal; widows: auto; word-spa=
cing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, =
255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial=
; font-size: inherit; font-style: normal; font-variant-caps: normal; font-w=
eight: normal; letter-spacing: normal; orphans: auto; text-align: start; te=
xt-indent: 0px; text-transform: none; white-space: normal; widows: auto; wo=
rd-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255,=
 255, 255); float: none; display: inline !important;" class=3D"">So it can =
be deleted in the form:</span><br style=3D"color: rgb(46, 46, 46); font-fam=
ily: arial; font-style: normal; font-variant-caps: normal; font-weight: nor=
mal; letter-spacing: normal; orphans: auto; text-align: start; text-indent:=
 0px; text-transform: none; white-space: normal; widows: auto; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255)=
;" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; fo=
nt-size: inherit; font-style: normal; font-variant-caps: normal; font-weigh=
t: normal; letter-spacing: normal; orphans: auto; text-align: start; text-i=
ndent: 0px; text-transform: none; white-space: normal; widows: auto; word-s=
pacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255=
, 255); float: none; display: inline !important;" class=3D"">delete&lt;5&gt=
; iptr;</span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font=
-style: normal; font-variant-caps: normal; font-weight: normal; letter-spac=
ing: normal; orphans: auto; text-align: start; text-indent: 0px; text-trans=
form: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-t=
ext-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><s=
pan style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit=
; font-style: normal; font-variant-caps: normal; font-weight: normal; lette=
r-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text=
-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -we=
bkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: n=
one; display: inline !important;" class=3D"">Which deletes the array of 5 i=
nts using the default static-size allocator,<span class=3D"Apple-converted-=
space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46); font-family=
: arial; font-style: normal; font-variant-caps: normal; font-weight: normal=
; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0p=
x; text-transform: none; white-space: normal; widows: auto; word-spacing: 0=
px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" =
class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-=
size: inherit; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; orphans: auto; text-align: start; text-inde=
nt: 0px; text-transform: none; white-space: normal; widows: auto; word-spac=
ing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 2=
55); float: none; display: inline !important;" class=3D"">unless overloaded=
 for int.</span><br style=3D"color: rgb(46, 46, 46); font-family: arial; fo=
nt-style: normal; font-variant-caps: normal; font-weight: normal; letter-sp=
acing: normal; orphans: auto; text-align: start; text-indent: 0px; text-tra=
nsform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit=
-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D"">=
<span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inher=
it; font-style: normal; font-variant-caps: normal; font-weight: normal; let=
ter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; te=
xt-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -=
webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float:=
 none; display: inline !important;" class=3D"">&nbsp;</span><br style=3D"co=
lor: rgb(46, 46, 46); font-family: arial; font-style: normal; font-variant-=
caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backgr=
ound-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 4=
6, 46); font-family: arial; font-size: inherit; font-style: normal; font-va=
riant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: a=
uto; text-align: start; text-indent: 0px; text-transform: none; white-space=
: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
background-color: rgb(255, 255, 255); float: none; display: inline !importa=
nt;" class=3D"">If you wanted to aOn Wednesday, November 9, 2016 at 3:44:49=
 AM UTC-5, Bengt<span class=3D"Apple-converted-space">&nbsp;</span></span><=
br style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal;=
 font-variant-caps: normal; font-weight: normal; letter-spacing: normal; or=
phans: auto; text-align: start; text-indent: 0px; text-transform: none; whi=
te-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-widt=
h: 0px; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"co=
lor: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: n=
ormal; font-variant-caps: normal; font-weight: normal; letter-spacing: norm=
al; orphans: auto; text-align: start; text-indent: 0px; text-transform: non=
e; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-strok=
e-width: 0px; background-color: rgb(255, 255, 255); float: none; display: i=
nline !important;" class=3D"">Gustafsson wrote:</span></div></blockquote></=
div><br class=3D""><div class=3D"">&nbsp; &nbsp; &nbsp;I=E2=80=99ve wondere=
d why this hasn=E2=80=99t already been considered for being made more consi=
stent with the rest of the language before, too, but I honestly don=E2=80=
=99t know whether the committee would even bother to <i class=3D"">consider=
</i>&nbsp;this change or not since its such a trivial one. &nbsp;Come to th=
ink of it, placement and `noexcept` `new` are kind of quirky as well, but I=
 also doubt whether chasing `new` to use normal function and functions temp=
late syntax for <i class=3D"">those</i>&nbsp;specifiers would be worth the =
trouble, <i class=3D"">either</i>. &nbsp;</div><br class=3D""><div class=3D=
"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-w=
rap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-=
space;" class=3D""><div style=3D"color: rgb(0, 0, 0); letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-=
break: after-white-space;" class=3D""><div style=3D"color: rgb(0, 0, 0); le=
tter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; t=
ext-transform: none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div class=3D"">Me=
ntally shrugging,&nbsp;</div><div class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glov=
er</div><div class=3D"">&nbsp; &nbsp; &nbsp;<a href=3D"mailto:RandomDSdevel=
@gmail.com" class=3D"">RandomDSdevel@gmail.com</a></div></div></div></div><=
/div></body></html>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/C1F5AD52-E8E3-4DDC-BAAC-AA6493C01FE3%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/C1F5AD52-E8E3-4DDC-BAAC-AA6493C01FE3%=
40gmail.com</a>.<br />

--Apple-Mail=_A3E98838-EC1D-4032-A024-65FC46126103--

.


Author: Ryan Nicholl <r.p.nicholl@gmail.com>
Date: Wed, 23 Aug 2017 15:46:14 -0700 (PDT)
Raw View
------=_Part_144_2078845385.1503528374260
Content-Type: multipart/alternative;
 boundary="----=_Part_145_1579435868.1503528374260"

------=_Part_145_1579435868.1503528374260
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Static-size new/delete is hardly trivial from an efficiency point of view.=
=20
Consider that you could store allocations for each size in a linked list,=
=20
thus if you need a 16-byte allocation, you could, at compile time, get the=
=20
address of the 16-byte heap and then pop from it at runtime (unless it's=20
empty). It's a much faster allocation system than dynamic-size allocators.=
=20
I think that it could provide C++ much improved performance.

On Wednesday, August 23, 2017 at 6:35:58 PM UTC-4, Bryce Glover wrote:
>
> On Aug 20, 2017, at 6:18 PM, std-pr...@isocpp.org <javascript:> wrote:
>
> If you use=20
> auto ptr =3D new T[5];
> Then you can call:=20
> delete[] ptr;
> This breaks static-size allocators or at least requires them to use some=
=20
> kind of expensive lookup method. I don't like breaking old code, so I thi=
nk
> =20
> a new parameter is better.
> =20
> I think e.g.=20
> new<16>()=20
> =20
> would be the best way to do this, which would return a void* to a 16-byte=
=20
> chunk (minimum).
> =20
> Likewise=20
> delete<16>(ptr);
> would delete a 16-byte chunk.
> =20
> If you need to allocate a certain class, you could do:
> new<> T(...);
> which would call "static-sized new" which must be deleted in the form:
> delete<> t_ptr;
> =20
> =20
> If you need a static-size array, that is supported like the allocation of=
=20
> the void*, only instead of uninitialized data you get an array of T:
> int *iptr =3D new<5> int;
> So it can be deleted in the form:
> delete<5> iptr;
> Which deletes the array of 5 ints using the default static-size allocator=
,
> =20
> unless overloaded for int.
> =20
> If you wanted to aOn Wednesday, November 9, 2016 at 3:44:49 AM UTC-5, Ben=
gt
> =20
> Gustafsson wrote:
>
>
>      I=E2=80=99ve wondered why this hasn=E2=80=99t already been considere=
d for being made=20
> more consistent with the rest of the language before, too, but I honestly=
=20
> don=E2=80=99t know whether the committee would even bother to *consider* =
this=20
> change or not since its such a trivial one.  Come to think of it, placeme=
nt=20
> and `noexcept` `new` are kind of quirky as well, but I also doubt whether=
=20
> chasing `new` to use normal function and functions template syntax for=20
> *those* specifiers would be worth the trouble, *either*. =20
>
> Mentally shrugging,=20
>      Bryce Glover
>      Random...@gmail.com <javascript:>
>

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/4ae76471-84e7-4843-85c6-4e6a9085977e%40isocpp.or=
g.

------=_Part_145_1579435868.1503528374260
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Static-size new/delete is hardly trivial from an efficienc=
y point of view. Consider that you could store allocations for each size in=
 a linked list, thus if you need a 16-byte allocation, you could, at compil=
e time, get the address of the 16-byte heap and then pop from it at runtime=
 (unless it&#39;s empty). It&#39;s a much faster allocation system than dyn=
amic-size allocators. I think that it could provide C++ much improved perfo=
rmance.<br><br>On Wednesday, August 23, 2017 at 6:35:58 PM UTC-4, Bryce Glo=
ver wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:=
 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div style=3D"word-w=
rap:break-word"><div><blockquote type=3D"cite"><div>On Aug 20, 2017, at 6:1=
8 PM, <a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"a_=
0TlgonCwAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&#3=
9;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true;"=
>std-pr...@isocpp.org</a> wrote:</div><br><div><span style=3D"color:rgb(46,=
46,46);font-family:arial;font-size:inherit;font-style:normal;font-weight:no=
rmal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:=
none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);=
float:none;display:inline!important">If you use<span>=C2=A0</span></span><b=
r style=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-wei=
ght:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-tran=
sform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255=
,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inher=
it;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:st=
art;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px=
;background-color:rgb(255,255,255);float:none;display:inline!important">aut=
o ptr =3D new T[5];</span><br style=3D"color:rgb(46,46,46);font-family:aria=
l;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:sta=
rt;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;=
background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-=
family:arial;font-size:inherit;font-style:normal;font-weight:normal;letter-=
spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-s=
pace:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;d=
isplay:inline!important">Then you can call:<span>=C2=A0</span></span><br st=
yle=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:=
normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transfor=
m:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255=
)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;f=
ont-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;=
text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;bac=
kground-color:rgb(255,255,255);float:none;display:inline!important">delete[=
] ptr;</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-style:=
normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inden=
t:0px;text-transform:none;white-space:normal;word-spacing:0px;background-co=
lor:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;=
font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:norma=
l;text-align:start;text-indent:0px;text-transform:none;white-space:normal;w=
ord-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline=
!important">This breaks static-size allocators or at least requires them to=
 use some<span>=C2=A0</span></span><br style=3D"color:rgb(46,46,46);font-fa=
mily:arial;font-style:normal;font-weight:normal;letter-spacing:normal;text-=
align:start;text-indent:0px;text-transform:none;white-space:normal;word-spa=
cing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,=
46);font-family:arial;font-size:inherit;font-style:normal;font-weight:norma=
l;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:non=
e;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);flo=
at:none;display:inline!important">kind of expensive lookup method. I don&#3=
9;t like breaking old code, so I think<span>=C2=A0</span></span><br style=
=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:nor=
mal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:n=
one;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">=
<span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font=
-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;tex=
t-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgr=
ound-color:rgb(255,255,255);float:none;display:inline!important">a new para=
meter is better.</span><br style=3D"color:rgb(46,46,46);font-family:arial;f=
ont-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;=
text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;bac=
kground-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-fam=
ily:arial;font-size:inherit;font-style:normal;font-weight:normal;letter-spa=
cing:normal;text-align:start;text-indent:0px;text-transform:none;white-spac=
e:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;disp=
lay:inline!important">=C2=A0</span><br style=3D"color:rgb(46,46,46);font-fa=
mily:arial;font-style:normal;font-weight:normal;letter-spacing:normal;text-=
align:start;text-indent:0px;text-transform:none;white-space:normal;word-spa=
cing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,=
46);font-family:arial;font-size:inherit;font-style:normal;font-weight:norma=
l;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:non=
e;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);flo=
at:none;display:inline!important">I think e.g.<span>=C2=A0</span></span><br=
 style=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weig=
ht:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-trans=
form:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,=
255)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inheri=
t;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:sta=
rt;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;=
background-color:rgb(255,255,255);float:none;display:inline!important">new&=
lt;16&gt;()<span>=C2=A0</span></span><br style=3D"color:rgb(46,46,46);font-=
family:arial;font-style:normal;font-weight:normal;letter-spacing:normal;tex=
t-align:start;text-indent:0px;text-transform:none;white-space:normal;word-s=
pacing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,4=
6,46);font-family:arial;font-size:inherit;font-style:normal;font-weight:nor=
mal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:n=
one;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);f=
loat:none;display:inline!important">=C2=A0</span><br style=3D"color:rgb(46,=
46,46);font-family:arial;font-style:normal;font-weight:normal;letter-spacin=
g:normal;text-align:start;text-indent:0px;text-transform:none;white-space:n=
ormal;word-spacing:0px;background-color:rgb(255,255,255)"><span style=3D"co=
lor:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:normal;fon=
t-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text=
-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(25=
5,255,255);float:none;display:inline!important">would be the best way to do=
 this, which would return a void* to a 16-byte<span>=C2=A0</span></span><br=
 style=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weig=
ht:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-trans=
form:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,=
255)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inheri=
t;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:sta=
rt;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;=
background-color:rgb(255,255,255);float:none;display:inline!important">chun=
k (minimum).</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-=
style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text=
-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgro=
und-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:=
arial;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing=
:normal;text-align:start;text-indent:0px;text-transform:none;white-space:no=
rmal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:=
inline!important">=C2=A0</span><br style=3D"color:rgb(46,46,46);font-family=
:arial;font-style:normal;font-weight:normal;letter-spacing:normal;text-alig=
n:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing=
:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);=
font-family:arial;font-size:inherit;font-style:normal;font-weight:normal;le=
tter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;wh=
ite-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:n=
one;display:inline!important">Likewise<span>=C2=A0</span></span><br style=
=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:nor=
mal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:n=
one;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">=
<span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font=
-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;tex=
t-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgr=
ound-color:rgb(255,255,255);float:none;display:inline!important">delete&lt;=
16&gt;(ptr);</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-=
style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text=
-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgro=
und-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:=
arial;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing=
:normal;text-align:start;text-indent:0px;text-transform:none;white-space:no=
rmal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:=
inline!important">would delete a 16-byte chunk.</span><br style=3D"color:rg=
b(46,46,46);font-family:arial;font-style:normal;font-weight:normal;letter-s=
pacing:normal;text-align:start;text-indent:0px;text-transform:none;white-sp=
ace:normal;word-spacing:0px;background-color:rgb(255,255,255)"><span style=
=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:norm=
al;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0p=
x;text-transform:none;white-space:normal;word-spacing:0px;background-color:=
rgb(255,255,255);float:none;display:inline!important">=C2=A0</span><br styl=
e=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:no=
rmal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:=
none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"=
><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;fon=
t-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;te=
xt-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backg=
round-color:rgb(255,255,255);float:none;display:inline!important">If you ne=
ed to allocate a certain class, you could do:</span><br style=3D"color:rgb(=
46,46,46);font-family:arial;font-style:normal;font-weight:normal;letter-spa=
cing:normal;text-align:start;text-indent:0px;text-transform:none;white-spac=
e:normal;word-spacing:0px;background-color:rgb(255,255,255)"><span style=3D=
"color:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:normal;=
font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;t=
ext-transform:none;white-space:normal;word-spacing:0px;background-color:rgb=
(255,255,255);float:none;display:inline!important">new&lt;&gt; T(...);</spa=
n><br style=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font=
-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-=
transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255=
,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:i=
nherit;font-style:normal;font-weight:normal;letter-spacing:normal;text-alig=
n:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing=
:0px;background-color:rgb(255,255,255);float:none;display:inline!important"=
>which would call &quot;static-sized new&quot; which must be deleted in the=
 form:</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-style:=
normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inden=
t:0px;text-transform:none;white-space:normal;word-spacing:0px;background-co=
lor:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;=
font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:norma=
l;text-align:start;text-indent:0px;text-transform:none;white-space:normal;w=
ord-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline=
!important">delete&lt;&gt; t_ptr;</span><br style=3D"color:rgb(46,46,46);fo=
nt-family:arial;font-style:normal;font-weight:normal;letter-spacing:normal;=
text-align:start;text-indent:0px;text-transform:none;white-space:normal;wor=
d-spacing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(4=
6,46,46);font-family:arial;font-size:inherit;font-style:normal;font-weight:=
normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transfor=
m:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255=
);float:none;display:inline!important">=C2=A0</span><br style=3D"color:rgb(=
46,46,46);font-family:arial;font-style:normal;font-weight:normal;letter-spa=
cing:normal;text-align:start;text-indent:0px;text-transform:none;white-spac=
e:normal;word-spacing:0px;background-color:rgb(255,255,255)"><span style=3D=
"color:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:normal;=
font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;t=
ext-transform:none;white-space:normal;word-spacing:0px;background-color:rgb=
(255,255,255);float:none;display:inline!important">=C2=A0</span><br style=
=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:nor=
mal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:n=
one;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">=
<span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font=
-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;tex=
t-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgr=
ound-color:rgb(255,255,255);float:none;display:inline!important">If you nee=
d a static-size array, that is supported like the allocation of<span>=C2=A0=
</span></span><br style=3D"color:rgb(46,46,46);font-family:arial;font-style=
:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inde=
nt:0px;text-transform:none;white-space:normal;word-spacing:0px;background-c=
olor:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial=
;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:norm=
al;text-align:start;text-indent:0px;text-transform:none;white-space:normal;=
word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inlin=
e!important">the void*, only instead of uninitialized data you get an array=
 of T:</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-style:=
normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inden=
t:0px;text-transform:none;white-space:normal;word-spacing:0px;background-co=
lor:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;=
font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:norma=
l;text-align:start;text-indent:0px;text-transform:none;white-space:normal;w=
ord-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline=
!important">int *iptr =3D new&lt;5&gt; int;</span><br style=3D"color:rgb(46=
,46,46);font-family:arial;font-style:normal;font-weight:normal;letter-spaci=
ng:normal;text-align:start;text-indent:0px;text-transform:none;white-space:=
normal;word-spacing:0px;background-color:rgb(255,255,255)"><span style=3D"c=
olor:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:normal;fo=
nt-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;tex=
t-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(2=
55,255,255);float:none;display:inline!important">So it can be deleted in th=
e form:</span><br style=3D"color:rgb(46,46,46);font-family:arial;font-style=
:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inde=
nt:0px;text-transform:none;white-space:normal;word-spacing:0px;background-c=
olor:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-family:arial=
;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:norm=
al;text-align:start;text-indent:0px;text-transform:none;white-space:normal;=
word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inlin=
e!important">delete&lt;5&gt; iptr;</span><br style=3D"color:rgb(46,46,46);f=
ont-family:arial;font-style:normal;font-weight:normal;letter-spacing:normal=
;text-align:start;text-indent:0px;text-transform:none;white-space:normal;wo=
rd-spacing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(=
46,46,46);font-family:arial;font-size:inherit;font-style:normal;font-weight=
:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transfo=
rm:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,25=
5);float:none;display:inline!important">Which deletes the array of 5 ints u=
sing the default static-size allocator,<span>=C2=A0</span></span><br style=
=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:nor=
mal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:n=
one;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255)">=
<span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font=
-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;tex=
t-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;backgr=
ound-color:rgb(255,255,255);float:none;display:inline!important">unless ove=
rloaded for int.</span><br style=3D"color:rgb(46,46,46);font-family:arial;f=
ont-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;=
text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;bac=
kground-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,46);font-fam=
ily:arial;font-size:inherit;font-style:normal;font-weight:normal;letter-spa=
cing:normal;text-align:start;text-indent:0px;text-transform:none;white-spac=
e:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;disp=
lay:inline!important">=C2=A0</span><br style=3D"color:rgb(46,46,46);font-fa=
mily:arial;font-style:normal;font-weight:normal;letter-spacing:normal;text-=
align:start;text-indent:0px;text-transform:none;white-space:normal;word-spa=
cing:0px;background-color:rgb(255,255,255)"><span style=3D"color:rgb(46,46,=
46);font-family:arial;font-size:inherit;font-style:normal;font-weight:norma=
l;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:non=
e;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);flo=
at:none;display:inline!important">If you wanted to aOn Wednesday, November =
9, 2016 at 3:44:49 AM UTC-5, Bengt<span>=C2=A0</span></span><br style=3D"co=
lor:rgb(46,46,46);font-family:arial;font-style:normal;font-weight:normal;le=
tter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;wh=
ite-space:normal;word-spacing:0px;background-color:rgb(255,255,255)"><span =
style=3D"color:rgb(46,46,46);font-family:arial;font-size:inherit;font-style=
:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-inde=
nt:0px;text-transform:none;white-space:normal;word-spacing:0px;background-c=
olor:rgb(255,255,255);float:none;display:inline!important">Gustafsson wrote=
:</span></div></blockquote></div><br><div>=C2=A0 =C2=A0 =C2=A0I=E2=80=99ve =
wondered why this hasn=E2=80=99t already been considered for being made mor=
e consistent with the rest of the language before, too, but I honestly don=
=E2=80=99t know whether the committee would even bother to <i>consider</i>=
=C2=A0this change or not since its such a trivial one. =C2=A0Come to think =
of it, placement and `noexcept` `new` are kind of quirky as well, but I als=
o doubt whether chasing `new` to use normal function and functions template=
 syntax for <i>those</i>=C2=A0specifiers would be worth the trouble, <i>eit=
her</i>. =C2=A0</div><br><div>
<div style=3D"color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-=
indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wra=
p:break-word"><div style=3D"color:rgb(0,0,0);letter-spacing:normal;text-ali=
gn:start;text-indent:0px;text-transform:none;white-space:normal;word-spacin=
g:0px;word-wrap:break-word"><div style=3D"color:rgb(0,0,0);letter-spacing:n=
ormal;text-align:start;text-indent:0px;text-transform:none;white-space:norm=
al;word-spacing:0px;word-wrap:break-word"><div>Mentally shrugging,=C2=A0</d=
iv><div>=C2=A0 =C2=A0 =C2=A0Bryce Glover</div><div>=C2=A0 =C2=A0 =C2=A0<a h=
ref=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"a_0TlgonCwAJ=
" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&#39;;return =
true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true;">Random...=
@gmail.com</a></div></div></div></div></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&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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/4ae76471-84e7-4843-85c6-4e6a9085977e%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/4ae76471-84e7-4843-85c6-4e6a9085977e=
%40isocpp.org</a>.<br />

------=_Part_145_1579435868.1503528374260--

------=_Part_144_2078845385.1503528374260--

.


Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Thu, 24 Aug 2017 18:12:01 -0400
Raw View
--Apple-Mail=_63212676-BF33-490C-9A17-C96E37F03E4B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

> On Aug 24, 2017, at 4:34 PM, std-proposals@isocpp.org wrote:
>=20
> Static-size new/delete is hardly trivial from an efficiency point of view=
.. Consider that you could store allocations for each size in a linked list,=
 thus if you need a 16-byte allocation, you could, at compile time, get the=
 address of the 16-byte heap and then pop from it at runtime (unless it's=
=20
> empty). It's a much faster allocation system than dynamic-size allocators=
.. I think that it could provide C++ much improved performance.

     I=E2=80=99m no expert, but your semantic suggestions largely seem like=
 they could be covered by and are simply dependent on QoI.  My previous com=
ments on syntax therefore still stand.  For more detailed debate, I yield t=
o more experienced correspondents on this mailing list. =20

Backing out before he bites off more than he can chew,=20
     Bryce Glover
     RandomDSdevel@gmail.com

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/ED12D027-5DEF-4A9D-97D2-E6764B917F20%40gmail.com=
..

--Apple-Mail=_63212676-BF33-490C-9A17-C96E37F03E4B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div><blockquote t=
ype=3D"cite" class=3D""><div class=3D"">On Aug 24, 2017, at 4:34 PM, <a hre=
f=3D"mailto:std-proposals@isocpp.org" class=3D"">std-proposals@isocpp.org</=
a> wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><spa=
n style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; =
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-=
spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-t=
ransform: none; white-space: normal; widows: auto; word-spacing: 0px; -webk=
it-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: non=
e; display: inline !important;" class=3D"">Static-size new/delete is hardly=
 trivial from an efficiency point of view.<span class=3D"Apple-converted-sp=
ace">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-family=
: arial; font-size: inherit; font-style: normal; font-variant-caps: normal;=
 font-weight: normal; letter-spacing: normal; orphans: auto; text-align: st=
art; text-indent: 0px; text-transform: none; white-space: normal; widows: a=
uto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: r=
gb(255, 255, 255); float: none; display: inline !important;" class=3D"">Con=
sider that you could store allocations for each size in a linked list,<span=
 class=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: =
rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal=
; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; o=
rphans: auto; text-align: start; text-indent: 0px; text-transform: none; wh=
ite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; background-color: rgb(255, 255, 255); float: none; display: inline=
 !important;" class=3D"">thus if you need a 16-byte allocation, you could, =
at compile time, get the<span class=3D"Apple-converted-space">&nbsp;</span>=
</span><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size=
: inherit; font-style: normal; font-variant-caps: normal; font-weight: norm=
al; letter-spacing: normal; orphans: auto; text-align: start; text-indent: =
0px; text-transform: none; white-space: normal; widows: auto; word-spacing:=
 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);=
 float: none; display: inline !important;" class=3D"">address of the 16-byt=
e heap and then pop from it at runtime (unless it's<span class=3D"Apple-con=
verted-space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46); font=
-family: arial; font-style: normal; font-variant-caps: normal; font-weight:=
 normal; letter-spacing: normal; orphans: auto; text-align: start; text-ind=
ent: 0px; text-transform: none; white-space: normal; widows: auto; word-spa=
cing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, =
255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial=
; font-size: inherit; font-style: normal; font-variant-caps: normal; font-w=
eight: normal; letter-spacing: normal; orphans: auto; text-align: start; te=
xt-indent: 0px; text-transform: none; white-space: normal; widows: auto; wo=
rd-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255,=
 255, 255); float: none; display: inline !important;" class=3D"">empty). It=
's a much faster allocation system than dynamic-size allocators.<span class=
=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: rgb(46=
, 46, 46); font-family: arial; font-size: inherit; font-style: normal; font=
-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans=
: auto; text-align: start; text-indent: 0px; text-transform: none; white-sp=
ace: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0p=
x; background-color: rgb(255, 255, 255); float: none; display: inline !impo=
rtant;" class=3D"">I think that it could provide C++ much improved performa=
nce.</span></div></blockquote></div><br class=3D""><div class=3D"">&nbsp; &=
nbsp; &nbsp;I=E2=80=99m no expert, but your semantic suggestions largely se=
em like they could be covered by and are simply dependent on QoI. &nbsp;My =
previous comments on syntax therefore still stand. &nbsp;For more detailed =
debate, I yield to more experienced correspondents on this mailing list. &n=
bsp;</div><br class=3D""><div class=3D"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-w=
rap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-=
space;" class=3D""><div style=3D"color: rgb(0, 0, 0); letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-=
break: after-white-space;" class=3D""><div style=3D"color: rgb(0, 0, 0); le=
tter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; t=
ext-transform: none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div class=3D"">Ba=
cking out before he bites off more than he can chew,&nbsp;</div><div class=
=3D"">&nbsp; &nbsp; &nbsp;Bryce Glover</div><div class=3D"">&nbsp; &nbsp; &=
nbsp;<a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">RandomDSdevel@gm=
ail.com</a></div></div></div></div></div></body></html>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/ED12D027-5DEF-4A9D-97D2-E6764B917F20%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/ED12D027-5DEF-4A9D-97D2-E6764B917F20%=
40gmail.com</a>.<br />

--Apple-Mail=_63212676-BF33-490C-9A17-C96E37F03E4B--

.


Author: Ryan Nicholl <r.p.nicholl@gmail.com>
Date: Thu, 24 Aug 2017 15:31:31 -0700 (PDT)
Raw View
------=_Part_1880_987904854.1503613891396
Content-Type: multipart/alternative;
 boundary="----=_Part_1881_1593709706.1503613891396"

------=_Part_1881_1593709706.1503613891396
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I'm not really aware of any compiler that could consistently do this kind=
=20
of optimization at compile time unless the parameter is a template=20
parameter. At best, you're praying to the inlining gods and hoping they=20
decide to inline and then do a lot of constant folding. Inlining isn't=20
consistent enough for this purpose.

On Thursday, August 24, 2017 at 6:12:06 PM UTC-4, Bryce Glover wrote:
>
> On Aug 24, 2017, at 4:34 PM, std-pr...@isocpp.org <javascript:> wrote:
>
> Static-size new/delete is hardly trivial from an efficiency point of view=
..
>  Consider that you could store allocations for each size in a linked list=
,
>  thus if you need a 16-byte allocation, you could, at compile time, get=
=20
> the address of the 16-byte heap and then pop from it at runtime (unless=
=20
> it's=20
> empty). It's a much faster allocation system than dynamic-size allocators=
..
>  I think that it could provide C++ much improved performance.
>
>
>      I=E2=80=99m no expert, but your semantic suggestions largely seem li=
ke they=20
> could be covered by and are simply dependent on QoI.  My previous comment=
s=20
> on syntax therefore still stand.  For more detailed debate, I yield to mo=
re=20
> experienced correspondents on this mailing list. =20
>
> Backing out before he bites off more than he can chew,=20
>      Bryce Glover
>      Random...@gmail.com <javascript:>
>

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/747db6c9-685c-44c6-85fe-126314168fb2%40isocpp.or=
g.

------=_Part_1881_1593709706.1503613891396
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I&#39;m not really aware of any compiler that could consis=
tently do this kind of optimization at compile time unless the parameter is=
 a template parameter. At best, you&#39;re praying to the inlining gods and=
 hoping they decide to inline and then do a lot of constant folding. Inlini=
ng isn&#39;t consistent enough for this purpose.<br><br>On Thursday, August=
 24, 2017 at 6:12:06 PM UTC-4, Bryce Glover wrote:<blockquote class=3D"gmai=
l_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;=
padding-left: 1ex;"><div style=3D"word-wrap:break-word"><div><blockquote ty=
pe=3D"cite"><div>On Aug 24, 2017, at 4:34 PM, <a href=3D"javascript:" targe=
t=3D"_blank" gdf-obfuscated-mailto=3D"33dyoFF0CwAJ" rel=3D"nofollow" onmous=
edown=3D"this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.hr=
ef=3D&#39;javascript:&#39;;return true;">std-pr...@isocpp.org</a> wrote:</d=
iv><br><div><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:=
inherit;font-style:normal;font-weight:normal;letter-spacing:normal;text-ali=
gn:start;text-indent:0px;text-transform:none;white-space:normal;word-spacin=
g:0px;background-color:rgb(255,255,255);float:none;display:inline!important=
">Static-size new/delete is hardly trivial from an efficiency point of view=
..<span>=C2=A0</span></span><span style=3D"color:rgb(46,46,46);font-family:a=
rial;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:=
normal;text-align:start;text-indent:0px;text-transform:none;white-space:nor=
mal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:i=
nline!important">Consider that you could store allocations for each size in=
 a linked list,<span>=C2=A0</span></span><span style=3D"color:rgb(46,46,46)=
;font-family:arial;font-size:inherit;font-style:normal;font-weight:normal;l=
etter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;w=
hite-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:=
none;display:inline!important">thus if you need a 16-byte allocation, you c=
ould, at compile time, get the<span>=C2=A0</span></span><span style=3D"colo=
r:rgb(46,46,46);font-family:arial;font-size:inherit;font-style:normal;font-=
weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-t=
ransform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,=
255,255);float:none;display:inline!important">address of the 16-byte heap a=
nd then pop from it at runtime (unless it&#39;s<span>=C2=A0</span></span><b=
r style=3D"color:rgb(46,46,46);font-family:arial;font-style:normal;font-wei=
ght:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-tran=
sform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255=
,255)"><span style=3D"color:rgb(46,46,46);font-family:arial;font-size:inher=
it;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:st=
art;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px=
;background-color:rgb(255,255,255);float:none;display:inline!important">emp=
ty). It&#39;s a much faster allocation system than dynamic-size allocators.=
<span>=C2=A0</span></span><span style=3D"color:rgb(46,46,46);font-family:ar=
ial;font-size:inherit;font-style:normal;font-weight:normal;letter-spacing:n=
ormal;text-align:start;text-indent:0px;text-transform:none;white-space:norm=
al;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:in=
line!important">I think that it could provide C++ much improved performance=
..</span></div></blockquote></div><br><div>=C2=A0 =C2=A0 =C2=A0I=E2=80=99m n=
o expert, but your semantic suggestions largely seem like they could be cov=
ered by and are simply dependent on QoI. =C2=A0My previous comments on synt=
ax therefore still stand. =C2=A0For more detailed debate, I yield to more e=
xperienced correspondents on this mailing list. =C2=A0</div><br><div>
<div style=3D"color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-=
indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wra=
p:break-word"><div style=3D"color:rgb(0,0,0);letter-spacing:normal;text-ali=
gn:start;text-indent:0px;text-transform:none;white-space:normal;word-spacin=
g:0px;word-wrap:break-word"><div style=3D"color:rgb(0,0,0);letter-spacing:n=
ormal;text-align:start;text-indent:0px;text-transform:none;white-space:norm=
al;word-spacing:0px;word-wrap:break-word"><div>Backing out before he bites =
off more than he can chew,=C2=A0</div><div>=C2=A0 =C2=A0 =C2=A0Bryce Glover=
</div><div>=C2=A0 =C2=A0 =C2=A0<a href=3D"javascript:" target=3D"_blank" gd=
f-obfuscated-mailto=3D"33dyoFF0CwAJ" rel=3D"nofollow" onmousedown=3D"this.h=
ref=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39;javas=
cript:&#39;;return true;">Random...@gmail.com</a></div></div></div></div></=
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&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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/747db6c9-685c-44c6-85fe-126314168fb2%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/747db6c9-685c-44c6-85fe-126314168fb2=
%40isocpp.org</a>.<br />

------=_Part_1881_1593709706.1503613891396--

------=_Part_1880_987904854.1503613891396--

.


Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Fri, 25 Aug 2017 19:48:49 -0400
Raw View
--Apple-Mail=_9D44639D-C023-4CCB-9282-0CDB93EF71D3
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

> On Aug 25, 2017, at 11:32 AM, std-proposals@isocpp.org wrote:
>=20
> Ryan Nicholl <r.p.nicholl@gmail.com <mailto:r.p.nicholl@gmail.com>>: Aug =
24 03:31PM -0700=20
>=20
> I'm not really aware of any compiler that could consistently do this kind=
 of optimization at compile time unless the parameter is a template paramet=
er. At best, you're praying to the inlining gods and hoping they decide to =
inline and then do a lot of constant folding. Inlining isn't consistent eno=
ugh for this purpose.

     True, but recommending that you try to get that changed (or perhaps wo=
rked around by having `new` be a shim implemented in such a way that it for=
wards its arguments on to a template function if such sleight of hand could=
 be hidden from end users) was the only suggestion I had left after seeing =
the lack of enthusiasm for the pursuit of the kind of syntax changes you=E2=
=80=99re after expressed by the other participants in this discussion threa=
d.  To reiterate for the last time before I finally get to shut up and lurk=
 again, my impression of the situation is that you=E2=80=99ll probably need=
 more motivating use cases than just the one you have now to make any headw=
ay on this front.  Whatever=E2=80=99s at stake, be it source or ABI compati=
bility or mere tradition, the inertia apparent here against changing C++=E2=
=80=99s most fundamental memory-management facilities in such a trivial way=
 simply seems too large to bother with, however nice the results could be. =
 Go ahead and persevere in heading further down this path you=E2=80=99ve la=
id out if you like, but I can=E2=80=99t be sure you won=E2=80=99t just get =
more of the same kinds of reactions you have already.  That=E2=80=99s the l=
ast I have to say about any of this. =20

Doing a disappearing act to dodge likely metaphorical tomatoes,=20
     Bryce Glover
     RandomDSdevel@gmail.com <mailto:RandomDSdevel@gmail.com>

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/600A9FB8-7384-4C65-B881-D98C9D6524C0%40gmail.com=
..

--Apple-Mail=_9D44639D-C023-4CCB-9282-0CDB93EF71D3
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div><blockquote t=
ype=3D"cite" class=3D""><div class=3D"">On Aug 25, 2017, at 11:32 AM, <a hr=
ef=3D"mailto:std-proposals@isocpp.org" class=3D"">std-proposals@isocpp.org<=
/a> wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><sp=
an style=3D"font-family: arial; font-style: normal; font-variant-caps: norm=
al; font-weight: normal; letter-spacing: normal; orphans: auto; text-align:=
 start; text-indent: 0px; text-transform: none; white-space: normal; widows=
: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color=
: rgb(255, 255, 255); color: rgb(177, 176, 176); font-size: 15px;" class=3D=
"">Ryan Nicholl &lt;<a href=3D"mailto:r.p.nicholl@gmail.com" class=3D"">r.p=
..nicholl@gmail.com</a>&gt;: Aug 24 03:31PM -0700<span class=3D"Apple-conver=
ted-space">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-=
family: arial; font-size: inherit; font-style: normal; font-variant-caps: n=
ormal; font-weight: normal; letter-spacing: normal; orphans: auto; text-ali=
gn: start; text-indent: 0px; text-transform: none; white-space: normal; wid=
ows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-co=
lor: rgb(255, 255, 255); float: none; display: inline !important;" class=3D=
""></span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-sty=
le: normal; font-variant-caps: normal; font-weight: normal; letter-spacing:=
 normal; orphans: auto; text-align: start; text-indent: 0px; text-transform=
: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-=
stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><br st=
yle=3D"color: rgb(46, 46, 46); font-family: arial; font-style: normal; font=
-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans=
: auto; text-align: start; text-indent: 0px; text-transform: none; white-sp=
ace: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0p=
x; background-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: =
rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal=
; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; o=
rphans: auto; text-align: start; text-indent: 0px; text-transform: none; wh=
ite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; background-color: rgb(255, 255, 255); float: none; display: inline=
 !important;" class=3D"">I'm not really aware of any compiler that could co=
nsistently do this kind<span class=3D"Apple-converted-space">&nbsp;</span><=
/span><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size:=
 inherit; font-style: normal; font-variant-caps: normal; font-weight: norma=
l; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); =
float: none; display: inline !important;" class=3D"">of optimization at com=
pile time unless the parameter is a template<span class=3D"Apple-converted-=
space">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-size: inherit; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">p=
arameter. At best, you're praying to the inlining gods and hoping they<span=
 class=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: =
rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal=
; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; o=
rphans: auto; text-align: start; text-indent: 0px; text-transform: none; wh=
ite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; background-color: rgb(255, 255, 255); float: none; display: inline=
 !important;" class=3D"">decide to inline and then do a lot of constant fol=
ding. Inlining isn't<span class=3D"Apple-converted-space">&nbsp;</span></sp=
an><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: in=
herit; font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px;=
 text-transform: none; white-space: normal; widows: auto; word-spacing: 0px=
; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); flo=
at: none; display: inline !important;" class=3D"">consistent enough for thi=
s purpose.</span></div></blockquote></div><br class=3D""><div class=3D"">&n=
bsp; &nbsp; &nbsp;True, but recommending that you try to get <i class=3D"">=
that</i>&nbsp;changed (or perhaps worked around by having `new` be a shim i=
mplemented in such a way that it forwards its arguments on to a template fu=
nction if such sleight of hand could be hidden from end users) was the only=
 suggestion I had left after seeing the lack of enthusiasm for the pursuit =
of the kind of syntax changes you=E2=80=99re after expressed by the other p=
articipants in this discussion thread. &nbsp;To reiterate for the last time=
 before I finally get to shut up and lurk again, my impression of the situa=
tion is that you=E2=80=99ll probably need more motivating use cases than ju=
st the one you have now to make any headway on this front. &nbsp;Whatever=
=E2=80=99s at stake, be it source or ABI compatibility or mere tradition, t=
he inertia apparent here against changing C++=E2=80=99s most fundamental me=
mory-management facilities in such a trivial way simply seems too large to =
bother with, however nice the results could be. &nbsp;Go ahead and persever=
e in heading further down this path you=E2=80=99ve laid out if you like, bu=
t I can=E2=80=99t be sure you won=E2=80=99t just get more of the same kinds=
 of reactions you have already. &nbsp;That=E2=80=99s the last I have to say=
 about any of this. &nbsp;</div><div class=3D""><br class=3D""></div><div c=
lass=3D"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-w=
rap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-=
space;" class=3D""><div style=3D"color: rgb(0, 0, 0); letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-=
break: after-white-space;" class=3D""><div style=3D"color: rgb(0, 0, 0); le=
tter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; t=
ext-transform: none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div class=3D"">Do=
ing a disappearing act to dodge likely metaphorical tomatoes,&nbsp;</div><d=
iv class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glover</div><div class=3D"">&nbsp; =
&nbsp; &nbsp;<a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">RandomDS=
devel@gmail.com</a></div></div></div></div></div></body></html>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/600A9FB8-7384-4C65-B881-D98C9D6524C0%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/600A9FB8-7384-4C65-B881-D98C9D6524C0%=
40gmail.com</a>.<br />

--Apple-Mail=_9D44639D-C023-4CCB-9282-0CDB93EF71D3--

.