Topic: Convert free function to callable class type
Author: Abyx <fl.lllj@gmail.com>
Date: Sun, 10 May 2015 02:10:28 -0700 (PDT)
Raw View
------=_Part_3719_980679279.1431249028588
Content-Type: multipart/alternative;
boundary="----=_Part_3720_339651428.1431249028588"
------=_Part_3720_339651428.1431249028588
Content-Type: text/plain; charset=UTF-8
If one want to use a free function with a class which accepts a callable
template parameter - a special constructor have to be called:
bool FooLess(Foo lhs, Foo rhs);
std::set<Foo, decltype(&FooLess)> set(FooLess);
bool ReleaseFoo(FooHandle);
std::unique_ptr<void, decltype(ReleaseFoo)> ptr(CreateFoo(), ReleaseFoo);
Because while function pointers are callable, they are not default
constructible.
It is possible to write a callable class which will accept a function
pointer as a template parameter, and forward arguments to it:
template<typename F, F P>
struct fn_to_type {
template<class... Args>
decltype(auto) operator()(Args&&... args) {
return P(std::forward<Args>(args)...);
}
};
Which can be used to create default-constructible typedefs:
bool ReleaseFoo(FooHandle);
using UniqueFoo = std::unique_ptr<void, fn_to_type<decltype(&ReleaseFoo), &
ReleaseFoo>>;
bool FooLess(Foo lhs, Foo rhs);
using FooSet = std::set<Foo, fn_to_type<decltype(&FooLess), &FooLess>>;
Is there a reason why the Standard library doesn't (or shouldn't) have such
adapter?
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
------=_Part_3720_339651428.1431249028588
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">If one want to use a free function with a class which acce=
pts a callable template parameter - a special constructor have to be called=
:<br><br><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250=
, 250); border-color: rgb(187, 187, 187); border-style: solid; border-width=
: 1px; word-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"su=
bprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettify">boo=
l</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><=
span style=3D"color: #606;" class=3D"styled-by-prettify">FooLess</span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">Foo</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> lhs</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styl=
ed-by-prettify">Foo</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> rhs</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">);</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>s=
td</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span=
><span style=3D"color: #008;" class=3D"styled-by-prettify">set</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify"><</span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">Foo</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">decltype</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">(&</span><span style=3D"color: #606;" class=3D"=
styled-by-prettify">FooLess</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">)></span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">set</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</s=
pan><code class=3D"prettyprint"><span style=3D"color: #606;" class=3D"style=
d-by-prettify">FooLess</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">);</span></code><span style=3D"color: #000;" class=3D"styled-by=
-prettify"></span><br><br>bool ReleaseFoo(FooHandle);<br>std::unique_ptr<=
;void, decltype(<code class=3D"prettyprint">ReleaseFoo)> ptr(CreateFoo()=
, </code><code class=3D"prettyprint">ReleaseFoo);</code></div></code></div>=
<br>Because while function pointers are callable, they are not default cons=
tructible.<br><br>It is possible to write a callable class which will accep=
t a function pointer as a template parameter, and forward arguments to it:<=
br><br><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, =
250); border-color: rgb(187, 187, 187); border-style: solid; border-width: =
1px; word-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subp=
rettyprint"><span style=3D"color: #606;" class=3D"styled-by-prettify">templ=
ate<typename F, F P><br>struct fn_to_type {<br> tem=
plate<class... Args><br> decltype(auto) operator()(=
Args&&... args) {<br> ret=
urn P(std::forward<Args>(args)...);<br> } <br=
>};</span><span style=3D"color: #660;" class=3D"styled-by-prettify"></span>=
</div></code></div><br>Which can be used to create default-constructible ty=
pedefs:<br><br><div class=3D"prettyprint" style=3D"background-color: rgb(25=
0, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border=
-width: 1px; word-wrap: break-word;"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #606;" class=3D"styled-by-prettif=
y"><code class=3D"prettyprint">bool ReleaseFoo(FooHandle);<br></code>using =
Unique</span><span style=3D"color: #606;" class=3D"styled-by-prettify"><cod=
e class=3D"prettyprint"><span style=3D"color: #606;" class=3D"styled-by-pre=
ttify"><code class=3D"prettyprint">Foo</code></span></code> =3D std::unique=
_ptr<void, fn_to_type<decltype(&</span><span style=3D"color: #606=
;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><span style=3D"=
color: #606;" class=3D"styled-by-prettify"><code class=3D"prettyprint">Rele=
aseFoo</code></span></code>), &</span><span style=3D"color: #606;" clas=
s=3D"styled-by-prettify"><code class=3D"prettyprint"><span style=3D"color: =
#606;" class=3D"styled-by-prettify"><code class=3D"prettyprint">ReleaseFoo<=
/code></span></code>>>;<br><br></span><span style=3D"color: #606;" cl=
ass=3D"styled-by-prettify"><code class=3D"prettyprint"><span style=3D"color=
: #008;" class=3D"styled-by-prettify">bool</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">FooLess</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">(</span><span style=3D"color: #606;" class=3D"styled-b=
y-prettify">Foo</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> lhs</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><s=
pan style=3D"color: #606;" class=3D"styled-by-prettify">Foo</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> rhs</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">);</span><span style=3D"color: #=
000;" class=3D"styled-by-prettify"><br></span></code>using FooSet =3D std::=
set<Foo, fn_to_type<decltype(&FooLess), &FooLess>>;</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify"></span></div><=
/code></div><br>Is there a reason why the Standard library doesn't (or shou=
ldn't) have such adapter?<br></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
------=_Part_3720_339651428.1431249028588--
------=_Part_3719_980679279.1431249028588--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Mon, 11 May 2015 07:22:42 +0900
Raw View
On Sunday 10 May 2015 02:10:28 Abyx wrote:
> bool FooLess(Foo lhs, Foo rhs);
> std::set<Foo, decltype(&FooLess)> set(FooLess);
>
> bool ReleaseFoo(FooHandle);
> std::unique_ptr<void, decltype(ReleaseFoo)> ptr(CreateFoo(), ReleaseFoo);
>
> Because while function pointers are callable, they are not default
> constructible.
What do you mean that they are not default constructible?
typedef decltype(&FooLess) FooLessPtr;
FooLessPtr ptr = FooLessPtr{};
You forgot the & in the decltype for std::unique_ptr.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
.
Author: Brian Bi <bbi5291@gmail.com>
Date: Sun, 10 May 2015 15:25:27 -0700
Raw View
--001a11c37bccff1a390515c1bc66
Content-Type: text/plain; charset=UTF-8
I assume what was meant is that a value-initialized function pointer
doesn't point to the desired function (or any function at all).
On Sun, May 10, 2015 at 3:22 PM, Thiago Macieira <thiago@macieira.org>
wrote:
> On Sunday 10 May 2015 02:10:28 Abyx wrote:
> > bool FooLess(Foo lhs, Foo rhs);
> > std::set<Foo, decltype(&FooLess)> set(FooLess);
> >
> > bool ReleaseFoo(FooHandle);
> > std::unique_ptr<void, decltype(ReleaseFoo)> ptr(CreateFoo(), ReleaseFoo);
> >
> > Because while function pointers are callable, they are not default
> > constructible.
>
> What do you mean that they are not default constructible?
>
> typedef decltype(&FooLess) FooLessPtr;
> FooLessPtr ptr = FooLessPtr{};
>
> You forgot the & in the decltype for std::unique_ptr.
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
> PGP/GPG: 0x6EF45358; fingerprint:
> E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> Visit this group at
> http://groups.google.com/a/isocpp.org/group/std-proposals/.
>
--
*Brian Bi*
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
--001a11c37bccff1a390515c1bc66
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I assume what was meant is that a value-initialized functi=
on pointer doesn't point to the desired function (or any function at al=
l).<br></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On S=
un, May 10, 2015 at 3:22 PM, Thiago Macieira <span dir=3D"ltr"><<a href=
=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>&g=
t;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0=
.8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"">On Sund=
ay 10 May 2015 02:10:28 Abyx wrote:<br>
> bool FooLess(Foo lhs, Foo rhs);<br>
> std::set<Foo, decltype(&FooLess)> set(FooLess);<br>
><br>
> bool ReleaseFoo(FooHandle);<br>
> std::unique_ptr<void, decltype(ReleaseFoo)> ptr(CreateFoo(), Rel=
easeFoo);<br>
><br>
> Because while function pointers are callable, they are not default<br>
> constructible.<br>
<br>
</span>What do you mean that they are not default constructible?<br>
<br>
typedef decltype(&FooLess) FooLessPtr;<br>
FooLessPtr ptr =3D FooLessPtr{};<br>
<br>
You forgot the & in the decltype for std::unique_ptr.<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
--<br>
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" target=3D"_b=
lank">macieira.info</a> - thiago (AT) <a href=3D"http://kde.org" target=3D"=
_blank">kde.org</a><br>
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br>
=C2=A0 =C2=A0 =C2=A0 PGP/GPG: 0x6EF45358; fingerprint:<br>
=C2=A0 =C2=A0 =C2=A0 E067 918B B660 DBD1 105C=C2=A0 966C 33F5 F005 6EF4 535=
8<br>
</font></span><div class=3D"HOEnZb"><div class=3D"h5"><br>
--<br>
<br>
---<br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org">std-propo=
sals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br>
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/" target=3D"_blank">http://groups.google.com/a/isocpp.org/gro=
up/std-proposals/</a>.<br>
</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br><div class=
=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"><font color=3D"=
#c0c0c0"><i>Brian Bi</i></font><br><div></div><div></div><div></div></div><=
/div></div></div>
</div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
--001a11c37bccff1a390515c1bc66--
.
Author: David Krauss <potswa@mac.com>
Date: Mon, 11 May 2015 10:43:03 +0800
Raw View
--Apple-Mail=_AFA4149A-5CD0-49DE-BBC6-77C9A90EA314
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
> On 2015=E2=80=9305=E2=80=9310, at 5:10 PM, Abyx <fl.lllj@gmail.com> wrote=
:
>=20
> template<typename F, F P>
> struct fn_to_type {
> template<class... Args>
> decltype(auto) operator()(Args&&... args) {
> return P(std::forward<Args>(args)...);
> } =20
> };
You can more easily get a Callable type by providing an implicit conversion=
to function pointer type. This also avoids the imperfection of perfect for=
warding wrt list-initialization.
std::integral_constant is already a sufficient solution.
#include <type_traits>
#include <set>
#include <iostream>
#include <iterator>
#include <algorithm>
bool comp( int lhs, int rhs ) {
return lhs + ( lhs & 1 ) * 10 < rhs + ( rhs & 1 ) * 10;
}
std::set< int, std::integral_constant< bool (*)( int, int ), & comp > >
s { 1, 2, 4, 5, 8, 12 };
int main() {
std::copy( s.begin(), s.end(), std::ostream_iterator< int >( std::cout,=
", " ) );
std::cout << "\n";
}
> Is there a reason why the Standard library doesn't (or shouldn't) have su=
ch adapter?
Probably because the <typename F, F P> bit is ugly. Thankfully it should be=
fixed soon, and then it can be used to create a replacement for integral_c=
onstant without the confusing integral nomenclature.
--=20
---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.
--Apple-Mail=_AFA4149A-5CD0-49DE-BBC6-77C9A90EA314
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""><br class=3D""><di=
v><blockquote type=3D"cite" class=3D""><div class=3D"">On 2015=E2=80=9305=
=E2=80=9310, at 5:10 PM, Abyx <<a href=3D"mailto:fl.lllj@gmail.com" clas=
s=3D"">fl.lllj@gmail.com</a>> wrote:</div><div class=3D""><div dir=3D"lt=
r" class=3D""><br class=3D""><div class=3D"prettyprint" style=3D"background=
-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style:=
solid; border-width: 1px; word-wrap: break-word;"><code class=3D"prettypri=
nt"><div class=3D"subprettyprint"><span style=3D"color: #606;" class=3D"sty=
led-by-prettify">template<typename F, F P><br class=3D"">struct fn_to=
_type {<br class=3D""> template<class... Args><br c=
lass=3D""> decltype(auto) operator()(Args&&... ar=
gs) {<br class=3D""> return P(std=
::forward<Args>(args)...);<br class=3D""> } <=
br class=3D"">};</span></div></code></div></div></div></blockquote><div><br=
class=3D""></div><div>You can more easily get a Callable type by providing=
an implicit conversion to function pointer type. This also avoids the impe=
rfection of perfect forwarding wrt list-initialization.</div><div><br class=
=3D""></div><div><font face=3D"Courier" class=3D"">std::integral_constant</=
font> is already a sufficient solution.</div><div><br class=3D""></div><div=
><font face=3D"Courier" class=3D"">#include <type_traits><br class=3D=
"">#include <set><br class=3D"">#include <iostream><br class=3D=
"">#include <iterator><br class=3D"">#include <algorithm><br cl=
ass=3D""><br class=3D"">bool comp( int lhs, int rhs ) {<br class=3D""> =
; return lhs + ( lhs & 1 ) * 10 < rhs + ( rhs & 1 ) =
* 10;<br class=3D"">}<br class=3D""><br class=3D"">std::set< int, std::i=
ntegral_constant< bool (*)( int, int ), & comp > ><br class=3D=
""> s { 1, 2, 4, 5, 8, 12 };<br class=3D""><br class=3D""=
>int main() {<br class=3D""> std::copy( s.begin(), s.end(=
), std::ostream_iterator< int >( std::cout, ", " ) );<br class=3D"">&=
nbsp; std::cout << "\n";<br class=3D"">}<br class=3D""></=
font><br class=3D""></div><br class=3D""><blockquote type=3D"cite" class=3D=
""><div class=3D""><div dir=3D"ltr" class=3D"">Is there a reason why the St=
andard library doesn't (or shouldn't) have such adapter?<br class=3D""></di=
v></div></blockquote><br class=3D""></div><div>Probably because the <font f=
ace=3D"Courier" class=3D""><typename F, F P></font> bit is ugly. Than=
kfully it should be fixed soon, and then it can be used to create a replace=
ment for <font face=3D"Courier" class=3D"">integral_constant</font> without=
the confusing <font face=3D"Courier" class=3D"">integral</font> nomenclatu=
re.</div><br class=3D""></body></html>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
--Apple-Mail=_AFA4149A-5CD0-49DE-BBC6-77C9A90EA314--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Sun, 10 May 2015 22:25:39 -0700 (PDT)
Raw View
------=_Part_4499_48701541.1431321939426
Content-Type: multipart/alternative;
boundary="----=_Part_4500_335530080.1431321939426"
------=_Part_4500_335530080.1431321939426
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sunday, May 10, 2015 at 10:43:12 PM UTC-4, David Krauss wrote:
>
>
> On 2015=E2=80=9305=E2=80=9310, at 5:10 PM, Abyx <fl....@gmail.com <javasc=
ript:>> wrote:
>
> Is there a reason why the Standard library doesn't (or shouldn't) have=20
> such adapter?
>
>
> Probably because the <typename F, F P> bit is ugly. Thankfully it should=
=20
> be fixed soon, and then it can be used to create a replacement for=20
> integral_constant without the confusing integral nomenclature.
>
>
Has there been a proposal that will fix this? With the sheer volume of=20
proposals going through the committee, I haven't been able to find the time=
=20
to read them all in any detail.=20
--=20
---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.
------=_Part_4500_335530080.1431321939426
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Sunday, May 10, 2015 at 10:43:12 PM UTC-4, Davi=
d Krauss 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"w=
ord-wrap:break-word"><br><div><blockquote type=3D"cite"><div>On 2015=E2=80=
=9305=E2=80=9310, at 5:10 PM, Abyx <<a href=3D"javascript:" target=3D"_b=
lank" gdf-obfuscated-mailto=3D"pYL0ty_r6H8J" rel=3D"nofollow" onmousedown=
=3D"this.href=3D'javascript:';return true;" onclick=3D"this.href=3D'javascr=
ipt:';return true;">fl....@gmail.com</a>> wrote:</div></blockquote><bloc=
kquote type=3D"cite"><div><div dir=3D"ltr">Is there a reason why the Standa=
rd library doesn't (or shouldn't) have such adapter?<br></div></div></block=
quote><br></div><div>Probably because the <font face=3D"Courier"><typena=
me F, F P></font> bit is ugly. Thankfully it should be fixed soon, and t=
hen it can be used to create a replacement for <font face=3D"Courier">integ=
ral_constant</font> without the confusing <font face=3D"Courier">integral</=
font> nomenclature.</div><br></div></blockquote><div><br>Has there been a p=
roposal that will fix this? With the sheer volume of proposals going throug=
h the committee, I haven't been able to find the time to read them all in a=
ny detail. <br></div></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
------=_Part_4500_335530080.1431321939426--
------=_Part_4499_48701541.1431321939426--
.