220 30779 <7aa018bf-dcaa-6c95-dd64-413990592c37@wanadoo.fr> article
Path: news.gmane.org!.POSTED!not-for-mail
From: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Make Typedef Great Again
Date: Sun, 5 Feb 2017 14:56:35 +0100
Lines: 540
Approved: news@gmane.org
Message-ID: <7aa018bf-dcaa-6c95-dd64-413990592c37@wanadoo.fr>
References: <cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org>
 <b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5@wanadoo.fr>
 <fc42405f-b5de-492a-9e7e-e191a6dd975c@isocpp.org>
 <3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="------------D4F2F8D6BC7572938EFADC2F"
X-Trace: blaine.gmane.org 1486302997 5878 195.159.176.226 (5 Feb 2017 13:56:37 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sun, 5 Feb 2017 13:56:37 +0000 (UTC)
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0)
 Gecko/20100101 Thunderbird/45.6.0
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBDH67CONY4PBBFO63TCAKGQEOFZ5YUY@isocpp.org Sun Feb 05 14:56:32 2017
Return-path: <std-proposals+bncBDH67CONY4PBBFO63TCAKGQEOFZ5YUY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-lf0-f71.google.com ([209.85.215.71])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDH67CONY4PBBFO63TCAKGQEOFZ5YUY@isocpp.org>)
	id 1caNIu-0001MO-CF
	for gclcip-std-proposals@m.gmane.org; Sun, 05 Feb 2017 14:56:32 +0100
Original-Received: by mail-lf0-f71.google.com with SMTP id z134sf25331473lff.5
        for <gclcip-std-proposals@m.gmane.org>; Sun, 05 Feb 2017 05:56:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=subject:to:references:from:message-id:date:user-agent:mime-version
         :in-reply-to:x-original-sender:x-original-authentication-results
         :reply-to:precedence:mailing-list:list-id:x-spam-checked-in-group
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=+Bm8TrwqPAOQ3l/nA5kq5W9T0gJyGoF8Xo9hEiMmbpg=;
        b=jeMDOWimHPrMILA8WwYCZfV3KOS8S7fxKELYu7te7Z0HO+b1FAWdg4qforCgeTSZJ1
         TcpPtMUeAvswuDXGYFTFB91pZac0TcUN6ExjVOAp+9dqHq76otfj1fdqpePgxaX22x/s
         nRrAUn8ecNCxv8RmpwrZ43Pjzfx/f8DwYui1FQktcZiILs4PwE1pK5NvkQSWGwdRhzmF
         qfc277haskGYqCkzRQQVMFGSO28uFeTwby4FwNvnxZelV71cktn28U7Lo4gzuT63JxMY
         bEo7pzIH/LstS27/vZrGa5GU7dEkFZvVHDMgZu9wQVLNffwCSFFZf7hjRLoADHUDGI1e
         4ckg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:subject:to:references:from:message-id:date
         :user-agent:mime-version:in-reply-to:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=+Bm8TrwqPAOQ3l/nA5kq5W9T0gJyGoF8Xo9hEiMmbpg=;
        b=BFm+poOuSssi5hBcsAH/9QUQ75Cb2vm5H9ae1yTfrn5do0744u6BVrQ2acabh8wzcV
         cnOYfB1m+y5/lkm7j3Nni1ZzyPPMb/rfpmer6aLudXGNFW95ESbSlSi9hIFPswX2d9KU
         kpJX/btz40+/rMRa2cvhj1lYFFapFp4DqnRznc2AMLeK6kHUBpXCD/mSYSq/LOyfQikx
         M8OctN+ama4ZefqB1Qyb/jBCNCFBAqQrFgqAxQGe8D4zobLXZsC9DW2eT+16c9stQFmK
         brNct06CiroK+/P7PNERPa7jpYG6qxdbMI+z/+IP0J268iaj3veNWEl49CS+Gmz0H1+5
         oF4w==
X-Gm-Message-State: AIkVDXKqo3fJsHDFKAkrN5EZb1MNYRa1nhQzx8SiffA4+5jjji7FbxQIzXz0bUjm0bQXNA==
X-Received: by 10.46.21.78 with SMTP id 14mr40274ljv.0.1486302998203;
        Sun, 05 Feb 2017 05:56:38 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.28.66.215 with SMTP id k84ls801822wmi.25.canary-gmail; Sun, 05
 Feb 2017 05:56:36 -0800 (PST)
X-Received: by 10.223.133.131 with SMTP id 3mr5396575wrt.161.1486302996756;
        Sun, 05 Feb 2017 05:56:36 -0800 (PST)
Original-Received: from smtp.smtpout.orange.fr (smtp13.smtpout.orange.fr. [80.12.242.135])
        by mx.google.com with ESMTPS id t2si4403186wmt.152.2017.02.05.05.56.36
        for <std-proposals@isocpp.org>
        (version=TLS1 cipher=AES128-SHA bits=128/128);
        Sun, 05 Feb 2017 05:56:36 -0800 (PST)
Received-SPF: neutral (google.com: 80.12.242.135 is neither permitted nor denied by best guess record for domain of vicente.botet@wanadoo.fr) client-ip=80.12.242.135;
Original-Received: from imac-de-vicente-botet-escriba.home ([2.11.72.89])
	by mwinf5d75 with ME
	id h1wb1u0041vahZu031wbfv; Sun, 05 Feb 2017 14:56:36 +0100
X-ME-Helo: imac-de-vicente-botet-escriba.home
X-ME-Auth: dmljZW50ZS5ib3RldEB3YW5hZG9vLmZy
X-ME-Date: Sun, 05 Feb 2017 14:56:36 +0100
X-ME-IP: 2.11.72.89
In-Reply-To: <3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org>
X-Original-Sender: vicente.botet@wanadoo.fr
X-Original-Authentication-Results: mx.google.com;       spf=neutral
 (google.com: 80.12.242.135 is neither permitted nor denied by best guess
 record for domain of vicente.botet@wanadoo.fr) smtp.mailfrom=vicente.botet@wanadoo.fr
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:30779
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/30779>

This is a multi-part message in MIME format.
--------------D4F2F8D6BC7572938EFADC2F
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Le 05/02/2017 =C3=A0 14:22, Bengt Gustafsson a =C3=A9crit :
> @Vicente: You present some nice solutions for the current language,=20
> but the drawback is of course that it is not obvious that it is=20
> /forbidden/ to change the default value of the parameter.
I don't understand, could you clarify?
> The other, minor, issue is that the template parameter name is not=20
> usable outside the template itself, which the typedef name would be.
Yes, this could be important on the base class case. For this case you=20
could define a nested alias.

|
template<blahblah..., typename Base=3D|typenameMetaFunc<blahblah...>::type|=
>
classDerived:publicBase// yay!
{
public: using base_type =3D Base;
// Use `Base` from now on...
}
|

Could you show an example where the base type is needed outside the=20
Derived class?
>
> Nevertheless it is of course advisable to mention theses possibilities=20
> in a future proposal, as you say.
>
> I see a problem with the proposal in that it has fairly complicated=20
> rules to learn, and the meaning differs depending on where you place=20
> your public's and const's. I'm not sure if the utility of the function=20
> outweighs the extra burden of having to learn and remember these extra=20
> rules.
I agree with you here. It is too complex. We just need a name.

Vicente
>
> We also have decltype to solve some of the use cases.
>
>
> Den s=C3=B6ndag 5 februari 2017 kl. 13:56:12 UTC+1 skrev TONGARI J:
>
>     On Sunday, February 5, 2017 at 6:41:36 PM UTC+8, Vicente J. Botet
>     Escriba wrote:
>
>         I'm not saying the feature is not needed. I believe however
>         that the proposal needs to compare what it is currently doable.
>
>         Couldn't we use the existing language already
>
>         |
>         template<blahblah..., typename T =3D
>         |typenameMetaFunc<blahblah...>::type |>
>         T f()// yay!
>         {
>         // Use `T` from now on...
>         }
>         |
>
>     In this case, it's just an alternative w/o (ab)using the template
>     param, like how concept-lite tries to eliminate enable_if trick.
>
>         |
>         template<blahblah..., typename
>         Base=3D|typenameMetaFunc<blahblah...>::type|>
>         classDerived:publicBase// yay!
>         {
>         // Use `Base` from now on...
>         }
>         |
>
>     This does not work if "blahblah...", is actually a template
>     parameter pack, which has to be the last one.
>
>>         In parameter list:
>>         |
>>         template<blahblah...>
>>         voidf(typedefSomeTemplate<blahblah...>T a,T b);// yay!
>>         |
>>
>         I'm not sure the |blahblahcould be inferred
>
>         Do tou mean
>
>         |
>         |template<class U>
>         voidf(U, typedefSomeTemplate<U>T a,T b);
>         |
>
>
>     I mean something like:
>     |
>     template<class...Args>
>     voidf(typedefstd::tuple<Args...>T a,T b);
>
>     f(std::make_tuple(1,2),std::make_tuple(3,4));//Args =3D=3D {int, int}=
,
>     T =3D=3D std::tuple<int, int>
>     |
>
> --=20
> You received this message because you are subscribed to the Google=20
> Groups "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send=20
> an email to std-proposals+unsubscribe@isocpp.org=20
> <mailto:std-proposals+unsubscribe@isocpp.org>.
> To post to this group, send email to std-proposals@isocpp.org=20
> <mailto:std-proposals@isocpp.org>.
> To view this discussion on the web visit=20
> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3fbbd6b8-908=
7-4c02-bf66-632b7eff480d%40isocpp.org=20
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3fbbd6b8-90=
87-4c02-bf66-632b7eff480d%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoot=
er>.


--=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/7aa018bf-dcaa-6c95-dd64-413990592c37%40wanadoo.f=
r.

--------------D4F2F8D6BC7572938EFADC2F
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Type=
">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Le 05/02/2017 =C3=A0 14:22, Bengt Gustaf=
sson
      a =C3=A9crit=C2=A0:<br>
    </div>
    <blockquote
      cite=3D"mid:3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">@Vicente: You present some nice solutions for the
        current language, but the drawback is of course that it is not
        obvious that it is <i>forbidden</i>=C2=A0to change the default valu=
e
        of the parameter. </div>
    </blockquote>
    I don't understand, could you clarify?<br>
    <blockquote
      cite=3D"mid:3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">The other, minor, issue is that the template
        parameter name is not usable outside the template itself, which
        the typedef name would be.</div>
    </blockquote>
    Yes, this could be important on the base class case. For this case
    you could define a nested alias.<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"subprettyprint"><span style=3D"color: #008;"
            class=3D"styled-by-prettify">template</span><span
            style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify">blahblah</s=
pan><span
            style=3D"color: #660;" class=3D"styled-by-prettify">...,
            typename Base=3D</span><span style=3D"color: #660;"
            class=3D"styled-by-prettify"><code class=3D"prettyprint"><span
                style=3D"color: #000;" class=3D"styled-by-prettify"></span>=
<span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type</s=
pan></code>&gt;</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #008;" class=3D"styled-by-prettify">=
class</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #606;" class=3D"styled-by-prettify">Derived</sp=
an><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #660;" class=3D"styled-by-prettify">:</span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"></span><spa=
n
            style=3D"color: #008;" class=3D"styled-by-prettify">public</spa=
n><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"></span><spa=
n
            style=3D"color: #606;" class=3D"styled-by-prettify">Base</span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #800;" class=3D"styled-by-prettify">// yay!</sp=
an><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
{<br>
            public: using base_type =3D Base;<br>
          </span><span style=3D"color: #000;" class=3D"styled-by-prettify">
            =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
            class=3D"styled-by-prettify">// Use `Base` from now on...</span=
><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
}</span></div>
      </code></div>
    <br>
    Could you show an example where the base type is needed outside the
    Derived class? <br>
    <blockquote
      cite=3D"mid:3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div><br>
        </div>
        <div>Nevertheless it is of course advisable to mention theses
          possibilities in a future proposal, as you say.</div>
        <div><br>
        </div>
        <div>I see a problem with the proposal in that it has fairly
          complicated rules to learn, and the meaning differs depending
          on where you place your public's and const's. I'm not sure if
          the utility of the function outweighs the extra burden of
          having to learn and remember these extra rules.</div>
      </div>
    </blockquote>
    I agree with you here. It is too complex. We just need a name.<br>
    <br>
    Vicente<br>
    <blockquote
      cite=3D"mid:3fbbd6b8-9087-4c02-bf66-632b7eff480d@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div><br>
        </div>
        <div>We also have decltype to solve some of the use cases.</div>
        <div><br>
          <br>
          Den s=C3=B6ndag 5 februari 2017 kl. 13:56:12 UTC+1 skrev TONGARI =
J:
          <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 Sunday, February 5, 2017 at 6:41:36 PM
              UTC+8, Vicente J. Botet Escriba wrote:=C2=A0
              <blockquote class=3D"gmail_quote"
                style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc
                solid;padding-left:1ex">
                <div bgcolor=3D"#FFFFFF" text=3D"#000000">
                  <div>I'm not saying the feature is not needed. I
                    believe however that the proposal needs to compare
                    what it is currently doable.<br>
                  </div>
                  <br>
                  Couldn't we use the existing language already<br>
                  <br>
                  <div
style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);bo=
rder-style:solid;border-width:1px;word-wrap:break-word"><code>
                      <div><span style=3D"color:#008">template</span><span
                          style=3D"color:#660">&lt;</span><span
                          style=3D"color:#000">blahblah</span><span
                          style=3D"color:#660">..., typename T =3D </span><=
span
                          style=3D"color:#660"><code><span
                              style=3D"color:#000"></span><span
                              style=3D"color:#008">typename</span><span
                              style=3D"color:#000"> </span><span
                              style=3D"color:#606">MetaFunc</span><span
                              style=3D"color:#660">&lt;</span><span
                              style=3D"color:#000">blahblah</span><span
                              style=3D"color:#660">...&gt;::</span><span
                              style=3D"color:#000">type </span></code>&gt;<=
/span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#000">T f</span><span
                          style=3D"color:#660">()</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#800">// yay!</span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#660">{</span><span
                          style=3D"color:#000"><br>
                          =C2=A0 =C2=A0 </span><span style=3D"color:#800">/=
/ Use
                          `T` from now on...</span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#660">}</span></div>
                    </code></div>
                  <blockquote type=3D"cite">
                    <div dir=3D"ltr"> </div>
                  </blockquote>
                </div>
              </blockquote>
              <div>In this case, it's just an alternative w/o (ab)using
                the template param, like how concept-lite tries to
                eliminate enable_if trick.</div>
              <div>=C2=A0</div>
              <blockquote class=3D"gmail_quote"
                style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc
                solid;padding-left:1ex">
                <div bgcolor=3D"#FFFFFF" text=3D"#000000">
                  <div
style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);bo=
rder-style:solid;border-width:1px;word-wrap:break-word"><code>
                      <div><span style=3D"color:#008">template</span><span
                          style=3D"color:#660">&lt;</span><span
                          style=3D"color:#000">blahblah</span><span
                          style=3D"color:#660">..., typename Base=3D</span>=
<span
                          style=3D"color:#660"><code><span
                              style=3D"color:#000"></span><span
                              style=3D"color:#008">typename</span><span
                              style=3D"color:#000"> </span><span
                              style=3D"color:#606">MetaFunc</span><span
                              style=3D"color:#660">&lt;</span><span
                              style=3D"color:#000">blahblah</span><span
                              style=3D"color:#660">...&gt;::</span><span
                              style=3D"color:#000">type</span></code>&gt;</=
span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#008">class</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#606">Derived</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#660">:</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#000"></span><span
                          style=3D"color:#008">public</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#000"></span><span
                          style=3D"color:#606">Base</span><span
                          style=3D"color:#000"> </span><span
                          style=3D"color:#800">// yay!</span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#660">{</span><span
                          style=3D"color:#000"><br>
                          =C2=A0 =C2=A0 </span><span style=3D"color:#800">/=
/ Use
                          `Base` from now on...</span><span
                          style=3D"color:#000"><br>
                        </span><span style=3D"color:#660">}</span></div>
                    </code></div>
                </div>
              </blockquote>
              <div>=C2=A0</div>
              <div>This does not work if "<span
style=3D"background-color:rgb(250,250,250);color:rgb(0,0,0);font-family:mon=
ospace">blahblah...</span>",
                is actually a template parameter pack, which has to be
                the last one.</div>
              <blockquote class=3D"gmail_quote"
                style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc
                solid;padding-left:1ex">
                <div bgcolor=3D"#FFFFFF" text=3D"#000000">
                  <blockquote type=3D"cite">
                    <div dir=3D"ltr">
                      <div>In parameter list:</div>
                      <div
style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);bo=
rder-style:solid;border-width:1px;word-wrap:break-word"><code>
                          <div><span style=3D"color:#008">template</span><s=
pan
                              style=3D"color:#660">&lt;</span><span
                              style=3D"color:#000">blahblah</span><span
                              style=3D"color:#660">...&gt;</span><span
                              style=3D"color:#000"><br>
                            </span><span style=3D"color:#008">void</span><s=
pan
                              style=3D"color:#000"> f</span><span
                              style=3D"color:#660">(</span><span
                              style=3D"color:#008">typedef</span><span
                              style=3D"color:#000"> </span><span
                              style=3D"color:#606">SomeTemplate</span><span
                              style=3D"color:#660">&lt;</span><span
                              style=3D"color:#000">blahblah</span><span
                              style=3D"color:#660">...&gt;</span><span
                              style=3D"color:#000"> T a</span><span
                              style=3D"color:#660">,</span><span
                              style=3D"color:#000"> T b</span><span
                              style=3D"color:#660">);</span><span
                              style=3D"color:#000"> </span><span
                              style=3D"color:#800">// yay!</span></div>
                        </code></div>
                      <div><br>
                      </div>
                    </div>
                  </blockquote>
                  I'm not sure the <code><span style=3D"color:#660"></span>=
<span
                      style=3D"color:#000">blahblah</span><span
                      style=3D"color:#660"> could be inferred<br>
                      <br>
                      Do tou mean<br>
                      <br>
                    </span></code><br>
                  <code><span style=3D"color:#008">template</span><span
                      style=3D"color:#660">&lt;class U</span><span
                      style=3D"color:#660">&gt;</span><span
                      style=3D"color:#000"><br>
                    </span><span style=3D"color:#008">void</span><span
                      style=3D"color:#000"> f</span><span
                      style=3D"color:#660">(U, </span><span
                      style=3D"color:#008">typedef</span><span
                      style=3D"color:#000"> </span><span
                      style=3D"color:#606">SomeTemplate</span><span
                      style=3D"color:#660">&lt;</span><span
                      style=3D"color:#000">U</span><span
                      style=3D"color:#660">&gt;</span><span
                      style=3D"color:#000"> T a</span><span
                      style=3D"color:#660">,</span><span
                      style=3D"color:#000"> T b</span><span
                      style=3D"color:#660">);<br>
                    </span></code></div>
              </blockquote>
              <div><br>
              </div>
              <div>I mean something like:</div>
              <div
style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);bo=
rder-style:solid;border-width:1px;word-wrap:break-word"><code>
                  <div><span style=3D"color:#008">template</span><span
                      style=3D"color:#660">&lt;</span><span
                      style=3D"color:#008">class</span><span
                      style=3D"color:#660">...</span><span
                      style=3D"color:#000"> </span><span
                      style=3D"color:#606">Args</span><span
                      style=3D"color:#660">&gt;</span><span
                      style=3D"color:#000"><br>
                    </span><span style=3D"color:#008">void</span><span
                      style=3D"color:#000"> f</span><span
                      style=3D"color:#660">(</span><span
                      style=3D"color:#008">typedef</span><span
                      style=3D"color:#000"> std</span><span
                      style=3D"color:#660">::</span><span
                      style=3D"color:#000">tuple</span><span
                      style=3D"color:#660">&lt;</span><span
                      style=3D"color:#606">Args</span><span
                      style=3D"color:#660">...&gt;</span><span
                      style=3D"color:#000"> T a</span><span
                      style=3D"color:#660">,</span><span
                      style=3D"color:#000"> T b</span><span
                      style=3D"color:#660">);</span><span
                      style=3D"color:#000"><br>
                      <br>
                    </span><font color=3D"#660066"><span
                        style=3D"color:#000">f</span><span
                        style=3D"color:#660">(</span><span
                        style=3D"color:#000">std</span><span
                        style=3D"color:#660">::</span><span
                        style=3D"color:#000">make_tuple</span><span
                        style=3D"color:#660">(</span><span
                        style=3D"color:#066">1</span><span
                        style=3D"color:#660">,</span><span
                        style=3D"color:#000"> </span><span
                        style=3D"color:#066">2</span><span
                        style=3D"color:#660">),</span><span
                        style=3D"color:#000"> </span></font><span
                      style=3D"color:#000">std</span><span
                      style=3D"color:#660">::</span><span
                      style=3D"color:#000">make_tuple</span><span
                      style=3D"color:#660">(</span><font color=3D"#006666">=
<span
                        style=3D"color:#066">3</span><span
                        style=3D"color:#660">,</span><span
                        style=3D"color:#000"> </span><span
                        style=3D"color:#066">4</span></font><span
                      style=3D"color:#660">));</span><span
                      style=3D"color:#000"> </span><span
                      style=3D"color:#800">//Args =3D=3D {int, int}, T =3D=
=3D
                      std::tuple&lt;int, int&gt;</span></div>
                </code></div>
            </div>
          </blockquote>
        </div>
      </div>
      -- <br>
      You received this message because you are subscribed to the Google
      Groups "ISO C++ Standard - Future Proposals" group.<br>
      To unsubscribe from this group and stop receiving emails from it,
      send an email to <a moz-do-not-send=3D"true"
        href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposals+=
unsubscribe@isocpp.org</a>.<br>
      To post to this group, send email to <a moz-do-not-send=3D"true"
        href=3D"mailto:std-proposals@isocpp.org">std-proposals@isocpp.org</=
a>.<br>
      To view this discussion on the web visit <a
        moz-do-not-send=3D"true"
href=3D"https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3fbbd6=
b8-9087-4c02-bf66-632b7eff480d%40isocpp.org?utm_medium=3Demail&amp;utm_sour=
ce=3Dfooter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3=
fbbd6b8-9087-4c02-bf66-632b7eff480d%40isocpp.org</a>.<br>
    </blockquote>
    <p><br>
    </p>
  </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/7aa018bf-dcaa-6c95-dd64-413990592c37%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7aa018bf-dcaa-6c95-dd64-413990592c37=
%40wanadoo.fr</a>.<br />

--------------D4F2F8D6BC7572938EFADC2F--

.
