Topic: Return type deduction into a template parameter
Author: aary@umich.edu
Date: Fri, 23 Dec 2016 21:14:15 -0800 (PST)
Raw View
------=_Part_1642_2129519318.1482556455910
Content-Type: multipart/alternative;
boundary="----=_Part_1643_95060173.1482556455910"
------=_Part_1643_95060173.1482556455910
Content-Type: text/plain; charset=UTF-8
Hey guys,
Return type deduction works with a simple auto return type, the proposal is
to extend this automatic return type deduction to work with a broader range
of contexts, in particular have it be able to be embedded into a template.
For example
// in the .hpp file, this is the declaration of the function, exposing
useful
// information to the user about the return type of the function, they now
// know that they can interact with the return type every way that the
// SomeInterfaceOrConcept class can be used.
template <typename Something>
SomeInterfaceOrConcept<auto> return_something(const Something& something);
and then in the .ipp file resides the implementation
template <typename Something>
SomeInterfaceOrConcept<auto> return_something(const Something& something) {
--
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/17e2d857-7cbf-4588-ab40-69b68dc69650%40isocpp.org.
------=_Part_1643_95060173.1482556455910
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hey guys,=C2=A0<div><br></div><div>Return type deduction w=
orks with a simple auto return type, the proposal is to extend this automat=
ic return type deduction to work with a broader range of contexts, in parti=
cular have it be able to be embedded into a template. =C2=A0For example</di=
v><div><br></div><div><div><font face=3D"courier new, monospace">// in the =
..hpp file, this is the declaration of the function, exposing useful</font><=
/div><div><font face=3D"courier new, monospace">// information to the user =
about the return type of the function, they now</font></div><div><font face=
=3D"courier new, monospace">// know that they can interact with the return =
type every way that the</font></div><div><font face=3D"courier new, monospa=
ce">// SomeInterfaceOrConcept class can be used. =C2=A0</font></div><div><f=
ont face=3D"courier new, monospace">template <typename Something></fo=
nt></div><div><font face=3D"courier new, monospace">SomeInterfaceOrConcept&=
lt;auto> return_something(const Something& something);</font></div><=
div><br></div></div><div>and then in the .ipp file resides the implementati=
on=C2=A0</div><div><br></div><div><div><font face=3D"courier new, monospace=
">template <typename Something></font></div><div><font face=3D"courie=
r new, monospace">SomeInterfaceOrConcept<auto> return_something(const=
Something& something) {</font></div></div><div><font face=3D"courier n=
ew, monospace">=C2=A0</font></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/17e2d857-7cbf-4588-ab40-69b68dc69650%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/17e2d857-7cbf-4588-ab40-69b68dc69650=
%40isocpp.org</a>.<br />
------=_Part_1643_95060173.1482556455910--
------=_Part_1642_2129519318.1482556455910--
.
Author: curious <aary@umich.edu>
Date: Fri, 23 Dec 2016 21:27:11 -0800 (PST)
Raw View
------=_Part_995_1486324719.1482557231300
Content-Type: multipart/alternative;
boundary="----=_Part_996_1759476799.1482557231301"
------=_Part_996_1759476799.1482557231301
Content-Type: text/plain; charset=UTF-8
Hey guys,
The proposal here is to allow the return type deduction syntax to be
extendible to more versatile situations for example as a template
parameter. Consider the following code
template <typename Something>
auto return_something(const Something& something);
This interface gives the reader little to no information about what
actually is being returned from the function, they have no way of knowing
how they should go about interacting with the returned object. If instead
something like the following could be done
// in the .hpp file, this is the declaration of the function, exposing
useful
// information to the user about the return type of the function, they now
// know that they can interact with the return type every way that the
// SomeInterfaceOrConcept class can be used.
template <typename Something>
SomeInterfaceOrConcept<auto> return_something(const Something& something);
Now the reader instantly knows that the return type is an instantiation of
the SomeInterfaceOrConcept class, and this function has therefore been
documented well without requiring the reader to look into the
implementation of the function or look at a trailing return type, which can
sometimes be just as complicated as looking at the actual function body
itself. Further sometimes it is convenient to skip the trailing return
type entirely.
Another thing this enables is the ability to add concept checks to the
return type. Giving the reader a better idea of the value being returned
without knowing its actual concrete type.
--
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/25614213-fc89-43e3-a17d-228fe01a9d01%40isocpp.org.
------=_Part_996_1759476799.1482557231301
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hey guys,<div><br></div><div>The proposal here is to allow=
the return type deduction syntax to be extendible to more versatile situat=
ions for example as a template parameter. =C2=A0Consider the following code=
</div><div><br></div><div><font face=3D"courier new, monospace">template &l=
t;typename Something></font></div><div><font face=3D"courier new, monosp=
ace">auto return_something(const Something& something);</font></div><di=
v><font face=3D"courier new, monospace"><br></font></div><div><font face=3D=
"arial, sans-serif">This interface gives the reader little to no informatio=
n about what actually is being returned from the function, they have no way=
of knowing how they should go about interacting with the returned object. =
=C2=A0If instead something like the following could be done</font></div><di=
v><font face=3D"arial, sans-serif"><br></font></div><div><div><font face=3D=
"courier new, monospace">// in the .hpp file, this is the declaration of th=
e function, exposing useful<br></font></div><div><font face=3D"courier new,=
monospace">// information to the user about the return type of the functio=
n, they now</font></div><div><font face=3D"courier new, monospace">// know =
that they can interact with the return type every way that the</font></div>=
<div><font face=3D"courier new, monospace">// SomeInterfaceOrConcept class =
can be used. =C2=A0</font></div><div><font face=3D"courier new, monospace">=
template <typename Something></font></div><div><font face=3D"courier =
new, monospace">SomeInterfaceOrConcept<auto> return_something(const S=
omething& something);</font></div><div><br></div></div><div><font face=
=3D"arial, sans-serif">Now the reader instantly knows that the return type =
is an instantiation of the </font><font face=3D"courier new, monospace">Som=
eInterfaceOrConcept</font><font face=3D"arial, sans-serif"> class, and this=
function has therefore been documented well without requiring the reader t=
o look into the implementation of the function or look at a trailing return=
type, which can sometimes be just as complicated as looking at the actual =
function body itself. =C2=A0Further sometimes it is convenient to skip the =
trailing return type entirely. =C2=A0</font></div><div><font face=3D"arial,=
sans-serif"><br></font></div><div><font face=3D"arial, sans-serif">Another=
thing this enables is the ability to add concept checks to the return type=
.. =C2=A0Giving the reader a better idea of the value being returned without=
knowing its actual concrete type. =C2=A0</font></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/25614213-fc89-43e3-a17d-228fe01a9d01%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/25614213-fc89-43e3-a17d-228fe01a9d01=
%40isocpp.org</a>.<br />
------=_Part_996_1759476799.1482557231301--
------=_Part_995_1486324719.1482557231300--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 23 Dec 2016 22:29:10 -0800 (PST)
Raw View
------=_Part_586_105044451.1482560950756
Content-Type: multipart/alternative;
boundary="----=_Part_587_512750503.1482560950756"
------=_Part_587_512750503.1482560950756
Content-Type: text/plain; charset=UTF-8
On Saturday, December 24, 2016 at 12:27:11 AM UTC-5, curious wrote:
>
> Hey guys,
>
> The proposal here is to allow the return type deduction syntax to be
> extendible to more versatile situations for example as a template
> parameter. Consider the following code
>
> template <typename Something>
> auto return_something(const Something& something);
>
> This interface gives the reader little to no information about what
> actually is being returned from the function, they have no way of knowing
> how they should go about interacting with the returned object.
>
But since the implementation of such a function must be visible, what does
it matter? Just keep reading and look for the first `return` statement.
If instead something like the following could be done
>
> // in the .hpp file, this is the declaration of the function, exposing
> useful
> // information to the user about the return type of the function, they now
> // know that they can interact with the return type every way that the
> // SomeInterfaceOrConcept class can be used.
> template <typename Something>
> SomeInterfaceOrConcept<auto> return_something(const Something& something);
>
> Now the reader instantly knows that the return type is an instantiation of
> the SomeInterfaceOrConcept class,
>
Classes don't have "instantiations". As such, it's not exactly clear what
`<auto>` is doing there. If you want concepts to be able to replace
placeholders in return type deduction, `<auto>` is meaningless; just use
the concept name itself, as with any other concept placeholder. And if
`SomeInterfaceOrConcept` is an actual class, then `<auto>` is a compile
error.
So what exactly is this supposed to do?
--
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/2def9f74-1a39-405c-8ae3-87336d646ee2%40isocpp.org.
------=_Part_587_512750503.1482560950756
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Saturday, December 24, 2016 at 12:27:11 AM UTC-5, curio=
us wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: =
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">Hey =
guys,<div><br></div><div>The proposal here is to allow the return type dedu=
ction syntax to be extendible to more versatile situations for example as a=
template parameter. =C2=A0Consider the following code</div><div><br></div>=
<div><font face=3D"courier new, monospace">template <typename Something&=
gt;</font></div><div><font face=3D"courier new, monospace">auto return_some=
thing(const Something& something);</font></div><div><font face=3D"couri=
er new, monospace"><br></font></div><div><font face=3D"arial, sans-serif">T=
his interface gives the reader little to no information about what actually=
is being returned from the function, they have no way of knowing how they =
should go about interacting with the returned object.</font></div></div></b=
lockquote><div><br>But since the implementation of such a function must be =
visible, what does it matter? Just keep reading and look for the first `ret=
urn` statement.<br><br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><=
div dir=3D"ltr"><div><font face=3D"arial, sans-serif">If instead something =
like the following could be done</font></div><div><font face=3D"arial, sans=
-serif"><br></font></div><div><div><font face=3D"courier new, monospace">//=
in the .hpp file, this is the declaration of the function, exposing useful=
<br></font></div><div><font face=3D"courier new, monospace">// information =
to the user about the return type of the function, they now</font></div><di=
v><font face=3D"courier new, monospace">// know that they can interact with=
the return type every way that the</font></div><div><font face=3D"courier =
new, monospace">// SomeInterfaceOrConcept class can be used. =C2=A0</font><=
/div><div><font face=3D"courier new, monospace">template <typename Somet=
hing></font></div><div><font face=3D"courier new, monospace">SomeInterfa=
ceOrConcept<auto> return_something(const Something& something);</=
font></div><div><br></div></div><div><font face=3D"arial, sans-serif">Now t=
he reader instantly knows that the return type is an instantiation of the <=
/font><font face=3D"courier new, monospace">SomeInterfaceOrConcept</font><f=
ont face=3D"arial, sans-serif"> class,</font></div></div></blockquote><div>=
<br>Classes don't have "instantiations". As such, it's no=
t exactly clear what `<auto>` is doing there. If you want concepts to=
be able to replace placeholders in return type deduction, `<auto>` i=
s meaningless; just use the concept name itself, as with any other concept =
placeholder. And if `SomeInterfaceOrConcept` is an actual class, then `<=
auto>` is a compile error.<br><br>So what exactly is this supposed to do=
?</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/2def9f74-1a39-405c-8ae3-87336d646ee2%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/2def9f74-1a39-405c-8ae3-87336d646ee2=
%40isocpp.org</a>.<br />
------=_Part_587_512750503.1482560950756--
------=_Part_586_105044451.1482560950756--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sat, 24 Dec 2016 10:27:05 -0200
Raw View
Em sexta-feira, 23 de dezembro de 2016, =C3=A0s 21:14:15 BRST, aary@umich.e=
du=20
escreveu:
> and then in the .ipp file resides the implementation
Out of curiosity and unrelated to your question, what's the reason for .ip=
p?
.c C sources
.i C preprocessed sources
.cc C++ sources
.ii C++ preprocessed sources
.cpp C++ sources
.ipp C++ preprocessed sources?
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/1533774.0LJ9HAiU8I%40tjmaciei-mobl1.
.
Author: aary@umich.edu
Date: Sat, 24 Dec 2016 07:50:23 -0800 (PST)
Raw View
------=_Part_2336_805005312.1482594623654
Content-Type: multipart/alternative;
boundary="----=_Part_2337_2049147615.1482594623654"
------=_Part_2337_2049147615.1482594623654
Content-Type: text/plain; charset=UTF-8
>
> But since the implementation of such a function must be visible, what does
> it matter? Just keep reading and look for the first `return` statement.
That still requires the user to read the code and find the return
statement, further the situation is complicated when the function is the
last one in a chain of functions that return a value, in which case the
user has to trace the return statements all the way to the first function
that returned the actual type. Or alternatively use an IDE. But having
this there still means that the language syntax is more clear to the
reader.
Classes don't have "instantiations". As such, it's not exactly clear what
> `<auto>` is doing there.
What I meant to say was that the object returned would be an an object of
an instantiation of the class template with the type of the return
parameter. I could not figure out how to edit my post :(. For instance if
you consider the following code
template <typename Type>
class Interface {
Interface(Type&& object_in) : object{std::forward<Type>(object_in) {}
Type object;
};
class Something {
public:
using value_type = int;
};
Interface<auto> return_something(const Something& something) {
return something::value_type{1};
}
This would return an Interface object with the integer 1 as a member
variable. I do not know whether this idea already exists built I thought
this feature could be more flexible than just a concept, as it allows the
usage of templates with the automatic return type deduction (which is an
awesome idea), and does not require the use of trailing return types (which
are verbose and sometimes not required).
On Saturday, December 24, 2016 at 11:59:10 AM UTC+5:30, Nicol Bolas wrote:
>
> On Saturday, December 24, 2016 at 12:27:11 AM UTC-5, curious wrote:
>>
>> Hey guys,
>>
>> The proposal here is to allow the return type deduction syntax to be
>> extendible to more versatile situations for example as a template
>> parameter. Consider the following code
>>
>> template <typename Something>
>> auto return_something(const Something& something);
>>
>> This interface gives the reader little to no information about what
>> actually is being returned from the function, they have no way of knowing
>> how they should go about interacting with the returned object.
>>
>
> But since the implementation of such a function must be visible, what does
> it matter? Just keep reading and look for the first `return` statement.
>
> If instead something like the following could be done
>>
>> // in the .hpp file, this is the declaration of the function, exposing
>> useful
>> // information to the user about the return type of the function, they now
>> // know that they can interact with the return type every way that the
>> // SomeInterfaceOrConcept class can be used.
>> template <typename Something>
>> SomeInterfaceOrConcept<auto> return_something(const Something& something);
>>
>> Now the reader instantly knows that the return type is an instantiation
>> of the SomeInterfaceOrConcept class,
>>
>
> Classes don't have "instantiations". As such, it's not exactly clear what
> `<auto>` is doing there. If you want concepts to be able to replace
> placeholders in return type deduction, `<auto>` is meaningless; just use
> the concept name itself, as with any other concept placeholder. And if
> `SomeInterfaceOrConcept` is an actual class, then `<auto>` is a compile
> error.
>
> So what exactly is this supposed to do?
>
--
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/3490b351-9080-4fa1-af35-f43cb315d278%40isocpp.org.
------=_Part_2337_2049147615.1482594623654
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px=
0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); =
border-left-style: solid; padding-left: 1ex;">But since the implementation =
of such a function must be visible, what does it matter? Just keep reading =
and look for the first `return` statement.</blockquote>That still requires =
the user to read the code and find the return statement, further the situat=
ion is complicated when the function is the last one in a chain of function=
s that return a value, in which case the user has to trace the return state=
ments all the way to the first function that returned the actual type. =C2=
=A0Or alternatively use an IDE. =C2=A0But having this there still means tha=
t the language syntax is more clear to the reader. =C2=A0<div><br></div><di=
v><blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; bor=
der-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-sty=
le: solid; padding-left: 1ex;">Classes don't have "instantiations&=
quot;. As such, it's not exactly clear what `<auto>` is doing the=
re.</blockquote><div>What I meant to say was that the object returned would=
be an an object of an instantiation of the class template with the type of=
the return parameter. =C2=A0I could not figure out how to edit my post :(.=
=C2=A0For instance if you consider the following code=C2=A0<br></div><div>=
<br></div><div><font face=3D"courier new, monospace">template <typename =
Type></font></div><div><font face=3D"courier new, monospace">class Inter=
face {</font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0=
Interface(Type&& object_in) : object{std::forward<Type>(obje=
ct_in) {}</font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=
=A0 Type object;</font></div><div><font face=3D"courier new, monospace">};<=
/font></div><div><font face=3D"courier new, monospace"><br></font></div><di=
v><font face=3D"courier new, monospace">class Something {</font></div><div>=
<font face=3D"courier new, monospace">public:</font></div><div><font face=
=3D"courier new, monospace">=C2=A0 =C2=A0 using value_type =3D int;</font><=
/div><div><font face=3D"courier new, monospace">};</font></div><div><font f=
ace=3D"courier new, monospace"><br></font></div><div><span style=3D"font-fa=
mily: 'courier new', monospace;">Interface<auto> return_somet=
hing(const Something& something) {</span><br></div><div><font face=3D"c=
ourier new, monospace">=C2=A0 =C2=A0 return something::value_type{1};</font=
></div><div><font face=3D"courier new, monospace">}</font></div><div><font =
face=3D"courier new, monospace"><br></font></div><div><font face=3D"arial, =
sans-serif">This would return an Interface object with the integer 1 as a m=
ember variable. =C2=A0I do not know whether this idea already exists built =
I thought this feature could be more flexible than just a concept, as it al=
lows the usage of templates with the automatic return type deduction (which=
is an awesome idea), and does not require the use of trailing return types=
(which are verbose and sometimes not required).=C2=A0</font></div><div><br=
><br>On Saturday, December 24, 2016 at 11:59:10 AM UTC+5:30, Nicol Bolas wr=
ote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex=
;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">On Saturd=
ay, December 24, 2016 at 12:27:11 AM UTC-5, curious wrote:<blockquote class=
=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc s=
olid;padding-left:1ex"><div dir=3D"ltr">Hey guys,<div><br></div><div>The pr=
oposal here is to allow the return type deduction syntax to be extendible t=
o more versatile situations for example as a template parameter. =C2=A0Cons=
ider the following code</div><div><br></div><div><font face=3D"courier new,=
monospace">template <typename Something></font></div><div><font face=
=3D"courier new, monospace">auto return_something(const Something& some=
thing);</font></div><div><font face=3D"courier new, monospace"><br></font><=
/div><div><font face=3D"arial, sans-serif">This interface gives the reader =
little to no information about what actually is being returned from the fun=
ction, they have no way of knowing how they should go about interacting wit=
h the returned object.</font></div></div></blockquote><div><br>But since th=
e implementation of such a function must be visible, what does it matter? J=
ust keep reading and look for the first `return` statement.<br><br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-=
left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div><font face=3D"a=
rial, sans-serif">If instead something like the following could be done</fo=
nt></div><div><font face=3D"arial, sans-serif"><br></font></div><div><div><=
font face=3D"courier new, monospace">// in the .hpp file, this is the decla=
ration of the function, exposing useful<br></font></div><div><font face=3D"=
courier new, monospace">// information to the user about the return type of=
the function, they now</font></div><div><font face=3D"courier new, monospa=
ce">// know that they can interact with the return type every way that the<=
/font></div><div><font face=3D"courier new, monospace">// SomeInterfaceOrCo=
ncept class can be used. =C2=A0</font></div><div><font face=3D"courier new,=
monospace">template <typename Something></font></div><div><font face=
=3D"courier new, monospace">SomeInterfaceOrConcept<auto> return_somet=
hing(const Something& something);</font></div><div><br></div></div><div=
><font face=3D"arial, sans-serif">Now the reader instantly knows that the r=
eturn type is an instantiation of the </font><font face=3D"courier new, mon=
ospace">SomeInterfaceOrConcept</font><font face=3D"arial, sans-serif"> clas=
s,</font></div></div></blockquote><div><br>Classes don't have "ins=
tantiations". As such, it's not exactly clear what `<auto>` =
is doing there. If you want concepts to be able to replace placeholders in =
return type deduction, `<auto>` is meaningless; just use the concept =
name itself, as with any other concept placeholder. And if `SomeInterfaceOr=
Concept` is an actual class, then `<auto>` is a compile error.<br><br=
>So what exactly is this supposed to do?</div></div></blockquote></div></di=
v></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3490b351-9080-4fa1-af35-f43cb315d278%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/3490b351-9080-4fa1-af35-f43cb315d278=
%40isocpp.org</a>.<br />
------=_Part_2337_2049147615.1482594623654--
------=_Part_2336_805005312.1482594623654--
.
Author: aary@umich.edu
Date: Sat, 24 Dec 2016 07:52:43 -0800 (PST)
Raw View
------=_Part_1295_325170353.1482594763142
Content-Type: multipart/alternative;
boundary="----=_Part_1296_780312603.1482594763143"
------=_Part_1296_780312603.1482594763143
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
It's a convention I picked up from the Boost source code :) It's just a=20
file that contains the implementation of template code, its not really=20
hidden from the user but it is just a separation at the logical level for=
=20
the reader=20
(http://stackoverflow.com/questions/19147208/difference-between-using-ipp-e=
xtension-and-cpp-extension-files)=20
On Saturday, December 24, 2016 at 5:57:17 PM UTC+5:30, Thiago Macieira=20
wrote:
>
> Em sexta-feira, 23 de dezembro de 2016, =C3=A0s 21:14:15 BRST, aa...@umic=
h.edu=20
> <javascript:>=20
> escreveu:=20
> > and then in the .ipp file resides the implementation=20
>
> Out of curiosity and unrelated to your question, what's the reason for=
=20
> .ipp?=20
>
> .c C sources=20
> .i C preprocessed sources=20
> .cc C++ sources=20
> .ii C++ preprocessed sources=20
> .cpp C++ sources=20
> .ipp C++ preprocessed sources?=20
>
> --=20
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org=20
> Software Architect - Intel Open Source Technology Center=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/b689f852-05f1-44b9-83fe-852ea3978f10%40isocpp.or=
g.
------=_Part_1296_780312603.1482594763143
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">It's a convention I picked up from the Boost source co=
de :) It's just a file that contains the implementation of template cod=
e, its not really hidden from the user but it is just a separation at the l=
ogical level for the reader (http://stackoverflow.com/questions/19147208/di=
fference-between-using-ipp-extension-and-cpp-extension-files)=C2=A0<br><br>=
On Saturday, December 24, 2016 at 5:57:17 PM UTC+5:30, Thiago Macieira wrot=
e:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;b=
order-left: 1px #ccc solid;padding-left: 1ex;">Em sexta-feira, 23 de dezemb=
ro de 2016, =C3=A0s 21:14:15 BRST, <a href=3D"javascript:" target=3D"_blank=
" gdf-obfuscated-mailto=3D"fUe5dqBZCAAJ" rel=3D"nofollow" onmousedown=3D"th=
is.href=3D'javascript:';return true;" onclick=3D"this.href=3D'j=
avascript:';return true;">aa...@umich.edu</a>=20
<br>escreveu:
<br>> and then in the .ipp file resides the implementation
<br>
<br>Out of curiosity and unrelated to your question, what's =C2=A0the r=
eason for .ipp?
<br>
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.c =C2=A0 =C2=A0 C sour=
ces
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.i =C2=A0 =C2=A0 C prep=
rocessed sources
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.cc =C2=A0 =C2=A0C++ so=
urces
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.ii =C2=A0 =C2=A0C++ pr=
eprocessed sources
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.cpp =C2=A0 C++ sources
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0.ipp =C2=A0 C++ preproc=
essed sources?
<br>
<br>--=20
<br>Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" target=
=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D'http://www.goo=
gle.com/url?q\x3dhttp%3A%2F%2Fmacieira.info\x26sa\x3dD\x26sntz\x3d1\x26usg\=
x3dAFQjCNEswDUBNCNanbu7euhqLn_62FW8ag';return true;" onclick=3D"this.hr=
ef=3D'http://www.google.com/url?q\x3dhttp%3A%2F%2Fmacieira.info\x26sa\x=
3dD\x26sntz\x3d1\x26usg\x3dAFQjCNEswDUBNCNanbu7euhqLn_62FW8ag';return t=
rue;">macieira.info</a> - thiago (AT) <a href=3D"http://kde.org" target=3D"=
_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D'http://www.google.=
com/url?q\x3dhttp%3A%2F%2Fkde.org\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNH=
GRJdo5_JYG1DowztwAHAKs80XSA';return true;" onclick=3D"this.href=3D'=
http://www.google.com/url?q\x3dhttp%3A%2F%2Fkde.org\x26sa\x3dD\x26sntz\x3d1=
\x26usg\x3dAFQjCNHGRJdo5_JYG1DowztwAHAKs80XSA';return true;">kde.org</a=
>
<br>=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center
<br>
<br></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b689f852-05f1-44b9-83fe-852ea3978f10%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b689f852-05f1-44b9-83fe-852ea3978f10=
%40isocpp.org</a>.<br />
------=_Part_1296_780312603.1482594763143--
------=_Part_1295_325170353.1482594763142--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sat, 24 Dec 2016 14:09:28 -0200
Raw View
Em s=C3=A1bado, 24 de dezembro de 2016, =C3=A0s 07:52:43 BRST, aary@umich.e=
du escreveu:
> It's a convention I picked up from the Boost source code :) It's just a
> file that contains the implementation of template code, its not really
> hidden from the user but it is just a separation at the logical level for
> the reader
> (http://stackoverflow.com/questions/19147208/difference-between-using-ipp=
-ex
> tension-and-cpp-extension-files)
Weird. Other places use different conventions for template sources that nee=
d=20
to be included. For example, libstdc++ (part of GCC) uses .tcc. I've also s=
een=20
..hxx for this.
..ipp is just weird because of the letter i.
But htanks for the clarification.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/3653894.AhUr1qHCRC%40tjmaciei-mobl1.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sat, 24 Dec 2016 14:15:32 -0200
Raw View
Em s=C3=A1bado, 24 de dezembro de 2016, =C3=A0s 07:50:23 BRST, aary@umich.e=
du escreveu:
> That still requires the user to read the code and find the return
> statement, further the situation is complicated when the function is the
> last one in a chain of functions that return a value, in which case the
> user has to trace the return statements all the way to the first function
> that returned the actual type. Or alternatively use an IDE. But having
> this there still means that the language syntax is more clear to the
> reader.
If the user has to trace something, then the API is badly designed. Don't=
=20
change the language to correct an API design flaw. Just design the API in a=
=20
better way.
Or, alternatively, make it so the user doesn't have to read the function an=
d=20
doesn't need to know what the actual type is. It's perfectly fine to have=
=20
complex or automatically-deduced return types that aren't evident. The user=
=20
will use auto too and that's that.
The user will never store that in a member or global variable. That's all.
> What I meant to say was that the object returned would be an an object of
> an instantiation of the class template with the type of the return
> parameter. I could not figure out how to edit my post :(. For instance =
if
> you consider the following code
>=20
> template <typename Type>
> class Interface {
> Interface(Type&& object_in) : object{std::forward<Type>(object_in) {}
> Type object;
> };
>=20
> class Something {
> public:
> using value_type =3D int;
> };
>=20
> Interface<auto> return_something(const Something& something) {
> return something::value_type{1};
> }
<auto> is already in use by Concepts. Is your proposal aligned with that?
If not, please find a different syntax.
> This would return an Interface object with the integer 1 as a member
It would return an Interfact<int> object.
> variable. I do not know whether this idea already exists built I thought
> this feature could be more flexible than just a concept, as it allows the
> usage of templates with the automatic return type deduction (which is an
> awesome idea), and does not require the use of trailing return types (whi=
ch
> are verbose and sometimes not required).
Please take a look at Concepts Lite. It may solve what you're looking for. =
Or=20
it may be a conflicting use of the syntax.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/1634996.i8lsGMFXel%40tjmaciei-mobl1.
.
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date: Sat, 24 Dec 2016 14:26:05 -0800 (PST)
Raw View
------=_Part_2752_465834707.1482618365680
Content-Type: multipart/alternative;
boundary="----=_Part_2753_158951505.1482618365680"
------=_Part_2753_158951505.1482618365680
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Saturday, December 24, 2016 at 8:09:33 AM UTC-8, Thiago Macieira wrote:
>
> Em s=C3=A1bado, 24 de dezembro de 2016, =C3=A0s 07:52:43 BRST, aa...@umic=
h.edu=20
> <javascript:> escreveu:=20
> > It's a convention I picked up from the Boost source code :) It's just a=
=20
> > file that contains the implementation of template code, its not really=
=20
> > hidden from the user but it is just a separation at the logical level=
=20
> for=20
> > the reader=20
> > (
> http://stackoverflow.com/questions/19147208/difference-between-using-ipp-=
ex=20
> > tension-and-cpp-extension-files)=20
>
> Weird. Other places use different conventions for template sources that=
=20
> need=20
> to be included. For example, libstdc++ (part of GCC) uses .tcc. I've also=
=20
> seen=20
> .hxx for this.=20
>
> .ipp is just weird because of the letter i.=20
>
FYI, ".ipp" is just ".cpp" with the first letter replaced by "i" for=20
"implementation".
My current employer's codebase uses the extensions (.cpp / .hpp / .ipp)=20
just as aary describes.
I have also worked on codebases that use (.cpp / .h / .hpp) or (.cc / .h /=
=20
..hh), and on ones that just shove everything in a single .h file (my=20
personal preference).
=E2=80=93Arthur
--=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/28dfd84e-f3e3-4c3c-97d7-330619c0ea32%40isocpp.or=
g.
------=_Part_2753_158951505.1482618365680
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Saturday, December 24, 2016 at 8:09:33 AM UTC-8, Thiago=
Macieira wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin=
-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">Em s=C3=A1bado=
, 24 de dezembro de 2016, =C3=A0s 07:52:43 BRST, <a href=3D"javascript:" ta=
rget=3D"_blank" gdf-obfuscated-mailto=3D"LfraZcFlCAAJ" rel=3D"nofollow" onm=
ousedown=3D"this.href=3D'javascript:';return true;" onclick=3D"this=
..href=3D'javascript:';return true;">aa...@umich.edu</a> escreveu:
<br>> It's a convention I picked up from the Boost source code :) It=
's just a
<br>> file that contains the implementation of template code, its not re=
ally
<br>> hidden from the user but it is just a separation at the logical le=
vel for
<br>> the reader
<br>> (<a href=3D"http://stackoverflow.com/questions/19147208/difference=
-between-using-ipp-ex" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"th=
is.href=3D'http://www.google.com/url?q\x3dhttp%3A%2F%2Fstackoverflow.co=
m%2Fquestions%2F19147208%2Fdifference-between-using-ipp-ex\x26sa\x3dD\x26sn=
tz\x3d1\x26usg\x3dAFQjCNFi4YwvxHDDCWFm9zAYi0AZ9PabcA';return true;" onc=
lick=3D"this.href=3D'http://www.google.com/url?q\x3dhttp%3A%2F%2Fstacko=
verflow.com%2Fquestions%2F19147208%2Fdifference-between-using-ipp-ex\x26sa\=
x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFi4YwvxHDDCWFm9zAYi0AZ9PabcA';return =
true;">http://stackoverflow.com/<wbr>questions/19147208/difference-<wbr>bet=
ween-using-ipp-ex</a>
<br>> tension-and-cpp-extension-<wbr>files)
<br>
<br>Weird. Other places use different conventions for template sources that=
need=20
<br>to be included. For example, libstdc++ (part of GCC) uses .tcc. I'v=
e also seen=20
<br>.hxx for this.
<br>
<br>.ipp is just weird because of the letter i.
<br></blockquote><div><br></div><div>FYI, ".ipp" is just ".c=
pp" with the first letter replaced by "i" for "implemen=
tation".</div><div>My current employer's codebase uses the extensi=
ons (.cpp / .hpp / .ipp) just as aary describes.</div><div>I have also work=
ed on codebases that use (.cpp / .h / .hpp) or (.cc / .h / .hh), and on one=
s that just shove everything in a single .h file (my personal preference).<=
/div><div><br></div><div>=E2=80=93Arthur</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/28dfd84e-f3e3-4c3c-97d7-330619c0ea32%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/28dfd84e-f3e3-4c3c-97d7-330619c0ea32=
%40isocpp.org</a>.<br />
------=_Part_2753_158951505.1482618365680--
------=_Part_2752_465834707.1482618365680--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sun, 25 Dec 2016 19:19:53 -0200
Raw View
Em s=C3=A1bado, 24 de dezembro de 2016, =C3=A0s 14:26:05 BRST, Arthur O'Dwy=
er escreveu:
> > .ipp is just weird because of the letter i.
>=20
> FYI, ".ipp" is just ".cpp" with the first letter replaced by "i" for
> "implementation".
I know, but "i" was used a couple of decades ago for "preprocessed" (which =
has=20
no 'i). Don't ask me why that is the case, I don't know the historical=20
context. It just is.
But I've never seen .ipp used for that. GCC, Clang and others do use .ii wh=
en=20
-save-temps is used and do recognise it as input.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/3150165.aJnkP5fiqR%40tjmaciei-mobl1.
.
Author: Patrice Roy <patricer@gmail.com>
Date: Tue, 27 Dec 2016 13:11:12 -0500
Raw View
--94eb2c190b5a058f690544a7c727
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
I think the 'i' then meant 'intermediate' (I also had an employer favoring
that convention at some point, way back)...
2016-12-25 16:19 GMT-05:00 Thiago Macieira <thiago@macieira.org>:
> Em s=C3=A1bado, 24 de dezembro de 2016, =C3=A0s 14:26:05 BRST, Arthur O'D=
wyer
> escreveu:
> > > .ipp is just weird because of the letter i.
> >
> > FYI, ".ipp" is just ".cpp" with the first letter replaced by "i" for
> > "implementation".
>
> I know, but "i" was used a couple of decades ago for "preprocessed" (whic=
h
> has
> no 'i). Don't ask me why that is the case, I don't know the historical
> context. It just is.
>
> But I've never seen .ipp used for that. GCC, Clang and others do use .ii
> when
> -save-temps is used and do recognise it as input.
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
>
> --
> 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/3150165.aJnkP5fiqR%40tjmaciei-mobl1.
>
--=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/CAKiZDp0tWoH%2Bdjux5tNbxjzEgLvkWL%3DpHx-SYwx-Mqr=
Xpeqnhw%40mail.gmail.com.
--94eb2c190b5a058f690544a7c727
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I think the 'i' then meant 'intermediate' =
(I also had an employer favoring that convention at some point, way back)..=
..<br></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">2016-1=
2-25 16:19 GMT-05:00 Thiago Macieira <span dir=3D"ltr"><<a href=3D"mailt=
o:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>></span>=
:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-le=
ft:1px #ccc solid;padding-left:1ex"><span class=3D"">Em s=C3=A1bado, 24 de =
dezembro de 2016, =C3=A0s 14:26:05 BRST, Arthur O'Dwyer escreveu:<br>
> > .ipp is just weird because of the letter i.<br>
><br>
> FYI, ".ipp" is just ".cpp" with the first letter r=
eplaced by "i" for<br>
> "implementation".<br>
<br>
</span>I know, but "i" was used a couple of decades ago for "=
;preprocessed" (which has<br>
no 'i). Don't ask me why that is the case, I don't know the his=
torical<br>
context. It just is.<br>
<br>
But I've never seen .ipp used for that. GCC, Clang and others do use .i=
i when<br>
-save-temps is used and do recognise it as input.<br>
<span class=3D""><br>
--<br>
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" rel=3D"noref=
errer" target=3D"_blank">macieira.info</a> - thiago (AT) <a href=3D"http://=
kde.org" rel=3D"noreferrer" target=3D"_blank">kde.org</a><br>
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br>
<br>
</span><span class=3D"">--<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@<wbr>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>
</span>To view this discussion on the web visit <a href=3D"https://groups.g=
oogle.com/a/isocpp.org/d/msgid/std-proposals/3150165.aJnkP5fiqR%40tjmaciei-=
mobl1" rel=3D"noreferrer" target=3D"_blank">https://groups.google.com/a/<wb=
r>isocpp.org/d/msgid/std-<wbr>proposals/3150165.aJnkP5fiqR%<wbr>40tjmaciei-=
mobl1</a>.<br>
</blockquote></div><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAKiZDp0tWoH%2Bdjux5tNbxjzEgLvkWL%3Dp=
Hx-SYwx-MqrXpeqnhw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAKiZDp0tWoH%=
2Bdjux5tNbxjzEgLvkWL%3DpHx-SYwx-MqrXpeqnhw%40mail.gmail.com</a>.<br />
--94eb2c190b5a058f690544a7c727--
.